MySQL中哪些情况下会索引失效,所有条件全部囊括
当我们的列涉及到范围的会失效,比如age>20会导致status索引失效,但是age>=20会让索引status不会失效
当我们在索引中使用了函数索引也会失效,假如phone有索引
这么写语句的话索引就会失效,因为使用了substring函数
当我们在字符串为条件索引时候假如忘记加单引号,索引也会失效
当模糊查询的时候,尾部模糊匹配的话索引不会失效,假如是头部的话就会失效
走索引
不走索引
当使用or关键字的时候,任何一边没有使用索引,索引就会失效
这里我只有id有索引,age没有索引,但是执行的时候发现id也没有利用索引
最后一种情况,就是MySQL是有个执行优化器的会判断是否走索引,如果走索引需要遍历的数据还是非常多,甚至还是要回表,不如自己去走全表扫描了,这个时候优化器就会不用索引去查询数据就会导致索引失效