什么情况下会导致索引失效

张开发
2026/4/9 23:14:55 15 分钟阅读

分享文章

什么情况下会导致索引失效
1. 索引列参与 “计算 / 函数操作”2. 使用 “不等于 / 否定判断”!、、NOT IN、NOT EXISTS3. 索引列使用 “模糊查询前缀 %”like % xxx4. 索引列类型不匹配隐式转换5. 联合索引不满足 “最左前缀原则”6. OR 条件中包含非索引列7.索引列包含 NULL 值且使用 IS NULL/IS NOT NULL8. 隐式字符集 / 排序规则不匹配9.子查询 / 派生表导致索引失效如何排查索引失效使用 EXPLAIN 分析执行计划看type列若为ALL表示全表扫描索引失效ref/range/eq_ref表示索引有效看key列显示实际使用的索引若为 NULL 则索引未使用看Extra列Using filesort/Using temporary表示排序 / 临时表可能伴随索引失效。检查慢查询日志开启慢查询日志定位执行时间长的 SQL结合 EXPLAIN 分析。总结避免索引失效的核心原则索引列不做计算 / 函数操作避免隐式转换联合索引遵循最左前缀原则低选择性列不单独建索引避免否定判断、前缀模糊查询、OR 含非索引列保证索引列 NOT NULL统一字符集 / 排序规则定期更新统计信息关注数据分布和索引选择性

更多文章