问题:
操作符 in/exists/like/not in/or/bettween…and哪些会引起索引失效?
一.bettween…and
会使用索引,但是需要注意的是它相当于”xxx>=num1 and xxx<=num2″,包含等号。
二.like
当like后边跟的是右百分,即’zhangsan%’或’zhang%san%’时都是使用索引的,
当like后边跟字符串最左边带左百分号时,即’%zhangsan’或’%zhangsan%’时,
索引会失效,
所以尽量不使用左百分,如果一定要用左百分使用覆盖索引可以提高效率。
mysql中测试
   。
所以很多人说不要使用in也不是没有道理。
四.not in
使用not in索引失效。
五.exists
主要是内层循环会用到索引,外层循环不对应查询列。
六.or
与in的情况差不多。在主键列上可以,但非主键列索引失效。