czjyc编程随笔返回随笔

MySQL 索引选择的几个观察

2026-07-03 / MySQL / 索引

慢查询不一定是没有索引,也可能是索引顺序不合适、过滤条件选择性不高,或者排序字段导致额外开销。排查时需要结合 SQL、数据分布和 explain 一起看。

组合索引顺序

组合索引不是把所有字段放进去就结束了。等值过滤、范围过滤和排序字段的顺序会影响使用效果。如果某个字段区分度很低,把它放在最前面通常帮助不大。

EXPLAIN SELECT *
FROM orders
WHERE user_id = ?
  AND status = ?
ORDER BY created_at DESC
LIMIT 20;

回表成本

如果查询返回字段很多,即使用到了索引,也可能因为回表次数太多而变慢。列表页可以只取必要字段,详情页再按主键读取完整内容。

结论

索引优化更像是对访问模式做整理。先确认高频查询,再根据实际条件设计索引,比临时给每个慢 SQL 加一个索引更稳。