1.计算,函数导致索引失效。 例子: 有索引 : EXPLAIN select * from emp where emp.name like 'abc%'; 索引失效:EXPLAIN select * from emp where left(emp.name,3) = 'abc';
2.like以%开头索引失效(因为底层为B+树的数据结构,如果以%开头就是谁都行,那索引也就失效了) 例子:
3.不等于(!=或者<>)索引失效
4.is not null 和 is nul(不同的版本和数据决定) 注意:当数据库中的数据的索引列的null值达到比较高的比例的时候,即使在is not null的情况下Mysql的查询优化器会选择使用索引,此时type的值是range(范围查询)
5.类型转换导致索引失效
例如上述图片中,name为字符串类型,那如果传的为123数字,内部会转换成字符串,有了内部转换,索引就失效了。
6.数据库优化器觉得不用索引更快的时候失效。