选子查询还是JOIN取决于数据量、关联逻辑和执行计划。数据量小且逻辑简单时子查询更直观;多表关联、需多字段或去重时JOIN更稳妥;性能需结合EXPLAIN实测,不同数据库版本优化能力差异大。

选子查询还是JOIN,关键看数据量、关联逻辑和执行计划,不是语法习惯问题。
数据量小、逻辑简单时,子查询更直观
比如查“销售额超过公司平均值的员工”,用子查询语义清晰:
SELECT name, salary FROM employees WHERE salary > (SELECT AVG(salary) FROM employees);
登录后复制
这种单值比较、无重复计算的场景,子查询可读性强,MySQL或PostgreSQL通常能自动优化成高效执行路径。但注意:子查询若写在WHERE中且含非相关条件(如未关联外层表),数据库一般只执行一次;若为相关子查询(如带WHERE e.dept_id = d.id),可能对主表每行都执行一次,性能会明显下降。
多表关联、需取多字段或去重时,JOIN更稳妥
例如查“每个部门的员工数和平均薪资”,必须联表聚合:
版权声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。
还木有评论哦,快来抢沙发吧~