索引失效的坑

明明建了索引,查询却还是全表扫。多半是写法触发了失效:在索引列上套函数、做运算、前导通配、隐式转换,都会让索引「看得见用不了」。

索引失效的坑要点

索引失效的坑示例

						-- 失效:在索引列上包函数
						SELECT * FROM order_record WHERE YEAR(create_time) = 2026;

						-- 失效:前导通配
						SELECT * FROM user WHERE user_name LIKE '%明';

						-- 失效:字符串列传了数字(隐式转换)
						SELECT * FROM user WHERE phone = 13800138000;

						-- 生效:后缀通配,能用上索引
						SELECT * FROM user WHERE user_name LIKE '张%';
避坑提醒:索引列在 WHERE 里要保持「干净」:不套函数、不运算、不隐式转换,原样参与比较才走得通。
索引失效的坑 · MySQL 索引 知识卡片
卡片 08 / 09 · MySQL 索引(1080×1440 速查卡片)

MySQL 索引知识点