MySQL 索引选择的几个观察
慢查询不一定是没有索引,也可能是索引顺序不合适、过滤条件选择性不高,或者排序字段导致额外开销。排查时需要结合 SQL、数据分布和 explain 一起看。
组合索引顺序
组合索引不是把所有字段放进去就结束了。等值过滤、范围过滤和排序字段的顺序会影响使用效果。如果某个字段区分度很低,把它放在最前面通常帮助不大。
EXPLAIN SELECT * FROM orders WHERE user_id = ? AND status = ? ORDER BY created_at DESC LIMIT 20;
回表成本
如果查询返回字段很多,即使用到了索引,也可能因为回表次数太多而变慢。列表页可以只取必要字段,详情页再按主键读取完整内容。
结论
索引优化更像是对访问模式做整理。先确认高频查询,再根据实际条件设计索引,比临时给每个慢 SQL 加一个索引更稳。