优化查询
March 20, 2026 · View on GitHub
查询优化往往是 MySQL 性能优化中最先着手的部分,因为大多数性能问题最终都会落到 SQL 执行效率上。
分析查询语句
优化 SQL 的第一步不是改写,而是分析。
最常见的方法是使用:
EXPLAIN SELECT * FROM user WHERE city = '上海';
EXPLAIN 可以帮助我们了解:
- 是否使用了索引
- 扫描了多少行
- 连接顺序是否合理
- 是否出现了全表扫描
索引对查询速度的影响
没有索引时,MySQL 可能需要扫描整张表; 有合适索引时,则可以更快定位记录。
例如:
SELECT *
FROM user
WHERE mobile = '13800000001';
如果 mobile 上建立了索引,查询效率通常会明显提高。
使用索引查询
索引通常更适合以下场景:
- 精确匹配
- 范围查询
- 排序和分组
- 连接字段匹配
例如:
SELECT *
FROM orders
WHERE user_id = 1
ORDER BY created_at DESC;
如果 user_id 和 created_at 的使用模式稳定,就值得考虑针对性索引设计。
优化子查询
某些子查询执行效率较低时,可以考虑:
- 改写为连接查询
- 通过索引提升子查询效率
- 避免不必要的嵌套层级
例如某些 IN (子查询) 或 EXISTS 查询,在数据量较大时就需要特别关注执行计划。
小结
优化查询的核心是:先分析,再改写,最后验证。高频慢 SQL 的优化收益通常远高于零散小优化。