MySQL 索引失效的场景有哪些?
① 对索引列使用函数/运算:WHERE YEAR(create_time)=2026 或 id+1=5;② 隐式类型转换:字符串列用数字比较(WHERE phone=123,phone 是 varchar 时可能失效或全表);③ 模糊查询前导通配:LIKE '%abc'('abc%' 可用);④ OR 连接非索引列:a=1 OR b=2 且 b 无索引(可用 UNION 优化);⑤ 联合索引不满足最左前缀:跳过最左列;⑥ 范围查询后列失效(>、< 之后);⑦ NOT IN、!= 可能失效(看优化器与区分度);⑧ 列参与比较时字符集/排序规则不一致。验证:EXPLAIN 看 type 是否 index/range/ref。
一起交流
分享经验,让问题更进一步
讨论,从你的观点开始
还没有回复,欢迎补充经验或分享不同的思路。