很久没写点什么了。唉(此处省略无数,一切尽在苦逼中...)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毫秒之间。
本文从百度空间搬家到博客园。。