已解决
412 浏览
2 回复
MySQL 联合索引 (a,b) 查询 b=1 会走索引吗?
看资料说最左前缀,但 EXPLAIN 有时候 type 又是 index,有点晕。到底什么情况下会走、什么情况下不走?
2 个回复
按采纳、点赞数排序
李老师 作者
12 天前
不会走索引(除非覆盖索引扫描)。联合索引 (a,b) 的排序是先按 a 再按 b,缺少 a 就无法定位。如果查询只 select a,b 且 b 有索引列,可能走 type=index 的全索引扫描,那本质上还是全表扫,只是扫的是索引文件,数据量大了一样慢。建议给 b 单独建索引,或者调整查询条件带上 a。
王老师 作者
11 天前
EXPLAIN 里如果 type 是 index,可以看 rows,基本等于全表行数,说明没真正利用索引做过滤。
登录后即可回复话题。去登录 →