加入或嵌套选择

时间:2011-10-13 14:57:24

标签: sql-server

我需要从table1获取一些数据,并从table2中只获取一列。什么查询更好?性能等有什么不同吗?

select t1.Col1, t1.Col2, 
    (select t2.Name from table2 t2 where t1.Code = t2.Code) as 'Name'
from table1 t1

select t1.Col1, t1.Col2, t2.Name
from table1 t1
    left join table2 t2 on t1.Code = t2.Code 

2 个答案:

答案 0 :(得分:1)

在大多数情况下,他们应该针对相同的查询进行优化,但并非总是如此。当他们不这样做时,子查询方法将杀死性能,因为它是对table1中的每一行执行的。

我个人更喜欢JOIN语法
如果表2中的每个代码在表2中有很多行,该怎么办?和提到的表现

答案 1 :(得分:0)

您的第一个答案是一个名为correlated subquery的例子。这些可能是您将遇到的最吸引人的事情之一。因此,第二种理论上更好。

话虽如此,SQL Server非常善于优化这些东西,特别是对于像你这样的平等条件。尝试使用Estimated Execution Plan查看两者,您会发现他们可能都进行了类似的优化。