2015-10-08 65 views
0

我知道有類似的問題浮動(如SQL Filter criteria in join criteria or where clause which is more efficient)但我記得SQL函數是特殊的。也許?那麼基本上哪個更正確/更高性能?哪一個更正確的SQL函數,加入或Where子句?

SELECT * 
    FROM [DBOne].[dbo].[SomeData] SD 
    INNER JOIN [DBTwo].[DBOne].[SomeOtherData_GetALL]() SOD ON SD.[DataID] = SOD.[DataID] 

OR

SELECT * 
    FROM [DBOne].[dbo].[SomeData] SD 
    WHERE SD.[DataID] IN (SELECT [DataID] FROM [DBTwo].[DBOne].[SomeOtherData_GetALL]()) 
+1

您的2個查詢不等價。你正在比較蘋果和橘子。 – sstan

+0

至於你的特定代碼示例 - 不,表函數沒有特別的或不同的。 –

+0

如何?我猜是不是'Left Join','Inner Join' ... –

回答

1

我通常使用WHERE EXISTS而不是加入。有關說明,請參閱here

0

基本上它好像叫JOIN VS SUB QUERY,如果你是與性能問題,我建議使用JOIN而不是使用WHERE IN條款,你可以看到的差異如果你使用SQL的執行計劃的性能。

爲了進一步瞭解,你可以看到這篇文章:Join vs. sub-query

希望這有助於。

+0

如果這是真的,那麼你會得到複選標記......但似乎人們都說這沒關係......你確定嗎? –

+0

實際上使用'SUBQUERY'是最簡單也是最簡單的方法,但就像我所說的,如果你關心的是性能本身,我相當確定使用'JOIN'基於我在SQL中的經驗更好。如果你想測試你可以使用SQL的執行計劃進行檢查。 – Japongskie