SQL不能使用索引的场景总结
在平时开发的过程中,SQL语句有可能会碰到各种无法使用索引的情况。
以下情况不能使用索引
- 使用的索引字段发生了隐式类型转换
存储引擎无法判断被转换类型后的字段的排序是否与索引树的顺序一致,故放弃使用索引。 - 使用的索引字段使用了表达式计算
- 使用的索引字段使用了函数
- 使用的使用的索引字段,不是联合索引的最左字段
- like关键字后使用了左模糊匹配或左右模糊匹配
- 使用的索引字段使用了不等于(!=或<>),NOT IN等操作时
另外:当要查询的字段使用了索引覆盖时,虽然where条件中没有使用任何的索引,其整条sql也是使用了索引的。
这时的时间复杂度就退化为了O(logN)了,也就是扫描了整棵索引树。

浙公网安备 33010602011771号