文章目录
联合索引生效和失效的条件
生效条件
两个或者多个列上的索引叫做复合或联合索引。
mysql中从左到右使用索引的字段,一个查询可以只使用索引中的一部分,但只能是最左侧。
创建符合索引时,应该仔细考虑列的顺序。对索引中所有列或仅对前几列执行搜索时,复合索引将会非常有用,仅对后面的任意列执行搜索时,复合索引没有任何用处。
失效条件
- 减少或者避免 select *
- 在使用<> 或 !=时会导致索引失并且进行全盘扫描
- like以通配符开头 ‘%abc…’ 开头会导致索引失效,全盘扫描
- 在索引列上做计算、函数、类型转换会导致索引失效
- 存储引擎不能使用索引范围右边的列
- is null not is null 无法使用索引
建议:
- 单键索引,尽量选择对于当前select适配性更好的索引
- 使用组合索引时,当前查询过滤性最好的字段在索引中的位置越靠前越好
- 使用组合索引时,尽量选择可以能够包含当前查询条件中更多字段的索引