上文说了索引失效,这个在网上文章很多都被总结好了。
创建了组合索引,但查询条件未遵守最左匹配原则;
在索引列上进行计算、函数、类型转换等操作;
以 %
开头的 LIKE 查询比如 ,如果只有%结尾则不会失效。
查询条件中使用 or,且 or 的前后条件中有一个列没有索引,涉及的索引都不会被使用到;
发生隐式转换。
注意:
mysql的sql查询语句中使用is null、is not null、!=对索引并没有任何影响,并不会因为where条件中使用了is null、is not null、!=这些判断条件导致索引失效而全表扫描。
mysql官方文档也已经明确说明is null并不会影响索引的使用。
硬要说有影响的话就是Oracle不支持含有NULL值的列上使用索引