2011-10-13 113 views
1

我需要从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 

回答

1

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

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

0

你的第一个答案是称为correlated subquery的东西的例子。这些可能是您遇到的性能最匮乏的事情之一。因此,第二个理论上更好。

话虽如此,SQL Server非常擅长优化这些东西,特别是对于像上面那样的相等条件。尝试使用Estimated Execution Plan来查看两者,并且您会看到它们可能都得到了类似的优化。