- 全列匹配
- 最佳左前缀法则
- 不在索引列上做任何操作(计算、函数、自动、手动类型转换),会导致索引失效
- 存储引擎不能使用索引中范围条件右边的列
- 尽量使用覆盖索引(只访问索引的查询(索引和查询列一致)),少用:select *
- mysql 再使用不等于(!=或者<>)的时候无法使用索引会导致全表扫描
- is null,is not null也无法使用索引
- like 以通配符开头(like '%abc'),mysql索引失效会变成全表扫描的操作
- 字符串不加单引号索引失效
- 少用or,用他连接时索引回失效
优化口诀
全列匹配我最爱,最左前缀要遵守;
带头大哥不能死,中间兄弟不能断;
索引列上少计算,范围之后全失效;
LIKE百分写最右,覆盖索引不写星;
不等空值还有or,索引失效要少用;