我有非常大的表和现有查询,在SELECT语句中使用了长子查询。如果子查询转换为JOIN,性能是否相同?
以下查询在性能方面有何不同?
SELECT
e.employee_id,
(
SELECT department_name
FROM Department
WHERE employee_id = e.employee_id) Department_Name
FROM Employee e
Vs的
SELECT
e.employee_id,
d.department_name Department_Name
FROM Employee e
JOIN Department d
ON d.employee_id = e.employee_id
答案 0 :(得分:4)
据我所知,第二个选项比第一个选项更好,因为第一个选项包含子查询。通常在sql语句执行中,连接比内部(子)查询工作得更快,您可以获取SQL Server生成的执行计划的帮助。问题在于如何编写查询,SQL Server将始终根据执行计划对其进行转换。这将是为两个查询生成执行计划的明智方法,绝对可以获得性能结果。
有关详情,请访问以下链接。
答案 1 :(得分:0)
在大多数情况下,具有索引连接列的表JOIN将提供比子查询更好的性能。通过选择两个查询(子查询和联接)来检查估计的执行计划,您可以看到SSMS的差异。