我需要从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
答案 0 :(得分:1)
在大多数情况下,他们应该针对相同的查询进行优化,但并非总是如此。当他们不这样做时,子查询方法将杀死性能,因为它是对table1中的每一行执行的。
我个人更喜欢JOIN语法
如果表2中的每个代码在表2中有很多行,该怎么办?和提到的表现
答案 1 :(得分:0)
您的第一个答案是一个名为correlated subquery的例子。这些可能是您将遇到的最吸引人的事情之一。因此,第二种理论上更好。
话虽如此,SQL Server非常善于优化这些东西,特别是对于像你这样的平等条件。尝试使用Estimated Execution Plan查看两者,您会发现他们可能都进行了类似的优化。