哪些情况索引会失效?
哪些情况索引会失效?
1. 索引失效概述
核心结论:索引失效是指数据库查询优化器决定不使用索引而采用全表扫描的情况,通常会导致查询性能显著下降。
2. 常见索引失效场景
2.1 违反最左前缀原则
复合索引必须按照定义的列顺序使用:
-- 假设有索引 (a,b,c)
WHERE b = 1 AND c = 2 -- 失效(缺少最左列a)
WHERE a = 1 AND c = 2 -- 部分使用(只用到了a)
2.2 对索引列进行计算或函数操作
任何对索引列的加工都会导致失效:
WHERE YEAR(create_time) = 2023 -- 失效
WHERE create_time BETWEEN '2023-01-01' AND '2023-12-31' -- 有效WHERE amount