1. 全值匹配我最爱
2. 最佳左前缀法则
如果索引了多列,要遵循最左前缀法则。指的是查询从索引前列开始并且不跳过索引中的列。
结论:过滤条件要使用索引必须按照索引建立时的顺序,依次满足,一旦跳过某个字段,索引后面的字段都无法被使用。
3. 计算、函数导致索引失效
4. 范围条件右边的列索引失效
可以将范围查询条件放置到语句最后。
5.不等于(!= 或者 <>)索引失效
6. is not null无法使用索引,is null可以使用索引
7. like以通配符%开头索引失效
8. 类型转换导致索引失效
- name=123发生类型转换,索引失效
- 设计实体类属性时,一定要与数据库字段类型相对应,否则会出现类型转换的情况。
一般性建议:
- 对于单键索引,尽量选择过滤性更好的索引 (例如:手机号,邮件,身份证);
- 在选择组合索引时,过滤性最好的字段在索引字段顺序中,位置越靠前越好;
- 选择组合索引时,尽量包含where中更多字段的索引;
- 组合索引出现范围查询时,尽量把这个字段放在索引次序的最后面;
- 尽量避免造成索引失效的情况。