很久沒寫點什麼了。唉(此處省略無數,一切盡在苦逼中...)sql
說說sql中的全匹配優化吧。在sql server進行模糊查詢的時候,若是是進行全匹配的話,那麼確定會用到like。咱們知道like '%張' 這樣的模糊查詢的時候是沒法使用到索引的,而like '張%'這樣卻能夠。不能使用索引,若是數據量很是大的話,效率天然就低下了。這時候咱們或許會想到CHARINDEX或者是PATINDEX這兩個T-SQL函數,不過即便使用了依然是沒有多大的效果的。數據庫
那麼這時候能夠考慮下逆轉的概念。函數
具體操做:測試
好比模糊查詢的條件是 張三 ,假設數據庫customer表中name字段有 張三丰,陳張三,李四,王張五等值優化
正常寫法spa
select * from customer where name like '%張三%' 那麼查出來的值就是「張三丰和陳張三」server
而逆轉的寫法索引
select * from customer where (name like '張三%' or reverse(name) like '三張%')博客
這是查出來的結果是不變的,可是查詢的時間,通過200萬條以上數據測試相差則上百倍。效率
測試正常寫法差很少10秒,而逆轉的寫法則爲20-35毫秒之間。
本文從百度空間搬家到博客園。。