MySQL 子查询优化最佳实践(2026最新整理)
时间:2026-11-4 07:05 作者:emer 分类: 无
前两天帮同事排查一个 bug,最后定位到问题出在子查询优化上。类似的坑我见过不止一次,索性把子查询优化相关的经验整理成这篇文章,希望对你有帮助。
第一步:认识子查询优化
优先使用官方文档推荐的方式实现子查询优化,不要随意复制来源不明的代码片段。
学习子查询优化时建议画出它的执行流程图,一图胜千言。
第二步:动手实现子查询优化
子查询优化为 JOIN,代码如下:
-- 子查询写法(MySQL 5.x 中性能差)
SELECT * FROM orders
WHERE user_id IN (SELECT id FROM users WHERE city = '北京');
-- 改写为 JOIN,通常更快且可命中索引
SELECT o.*
FROM orders o
INNER JOIN users u ON u.id = o.user_id
WHERE u.city = '北京';
-- 拿不准就用 EXPLAIN 对比两种写法的执行计划
第三步:检查与优化
- 代码提交前跑一遍完整测试,别把 CI 当你的本地环境。
- 复制粘贴代码后一定要逐行检查,隐性问题最爱藏在这里面。
最后说两句
感谢读到这里。子查询优化不是什么高深技术,但把它用对、用好,本身就是一种专业。
遇见问题加 QQ23979811 协助处理