2011-08-11 92 views
0

哪一個具有更好的性能?子查詢或OUTER連接

SELECT *,(SELECT MAX(old) FROM employee WHERE employee.CompanyId = Company.Id) 
    FROM Company 

SELECT *,MAX(old) FROM Company LEFT OUTER JOIN employee 
     ON Company.Id = employee.CompanyId 

how about bigger queries ? 

謝謝

+0

您是否測試過自己的查詢? –

+0

測試它,測量它,分析它,解釋它,「執行查詢計劃」它... – Jacob

+1

在管理工作室中試着打開它們的統計和執行計劃,你會看到哪一個最快。爲什麼猜測什麼時候可以測試? –

回答

3

在SQL Server Management Studio中運行這兩個查詢並查看execution plan

執行計劃不僅會告訴您哪部分查詢花費了多少資源,而且兩個查詢中的哪一個花費的資源比另一個多(如果將這兩者一起運行,執行計劃將顯示百分比值)。

1

子查詢比連接查詢的性能普遍較低。

2

如果你知道如何read execution plans然後看看。一個猜測是,SQL Server無論如何都會將兩個查詢優化爲相同的執行計劃。