索引失效的场景
- 对索引使用左或者左右模糊匹配 因为索引是从前往后依次匹配的
- 对索引使用函数、表达式计算、隐式转换
- 联合索引非最左匹配
- or 前面是索引后面不是 也走不了索引。
- 两列作比较
- != not in 、is not null、和not exists
- 统计信息终重复率太高 原因:重复度太高的话,索引扫到的大多数是重复的,这些数据最后可能也需要去扫描表。假如性别,100万数据 有50万重复的,先扫描了索引过滤了50完数据, 还需要扫描表取这个50万数据,这50完数据分布也可能不均匀,有可能为了扫描这50万数据需要对全表进行扫描, 整体相比直接全表扫描,多了对索引的扫描,性能可能会更差。因此重复度太高的不走索引。
但是有时可能是统计信息不准确导致的, 需要更新下统计信息即可。或者让sql强制走索引观察下执行速率。

浙公网安备 33010602011771号