MySQL 子查询和 JOIN 怎么选?
子查询:嵌套 SELECT,可读性好但老版本优化差(逐行执行、临时表);JOIN:表连接,优化器选择更优执行计划(索引连接、hash join)。经验:① 大部分场景 JOIN 或改写为 JOIN 性能更好(尤其 IN 子查询);② 8.0 子查询优化增强(semi-join、物化、lateral),很多场景已自动优化;③ EXISTS 与 IN:小表驱动大表时 EXISTS 适合相关子查询;④ 明确场景:聚合结果当过滤条件用子查询(WHERE x > (SELECT AVG(y)...))不可替代;⑤ 生产都 EXPLAIN 验证。
一起交流
分享经验,让问题更进一步
讨论,从你的观点开始
还没有回复,欢迎补充经验或分享不同的思路。