索引失效的几种情况
- 最佳左前缀法则
- 不再索引列上做任何操作(计算、函数或类型转换),会导致索引失效而转向全表扫描
- 存储引擎不能使用索引范围条件右边的列
- 尽量索引和查询列一致
- 使用了 != 或 <>
- is null 或 is not null
- like 以通配符开头
可以建立组合索引解决使用 like 条件使索引失效问题。 - 字符串不加单引号,如果不加数据库会做一次隐式类型转换。
- 使用 or 条件
背诵口诀
1.带头大哥不能死;
2.中间兄弟不能断;
3.索引列上不计算;
4.like百分加右边;
5.范围之后全失效;
6.字符串里有引号;
索引使用建议
连接查询时,左连接索引建立在右表的字段中;
连接时以小表驱动大表