2012-10-30 81 views
2

可能重複:
Condition within JOIN or WHEREWhere子句與內部聯接語句檢查是否相同?

是低於2查詢是否相同?

SELECT u.* 
FROM User u 
    INNER JOIN Sales s ON (u.userId = s.userId) 
WHERE 
u.active = 1 AND 
s.amount > 0 AND 
s.status = 1 

與:

SELECT u.* 
FROM User u 
    INNER JOIN Sales s ON 
     (u.userId = s.userId AND s.amount > 0 and s.status=1) 
WHERE 
u.active = 1 

是在始終設置結果而言這兩個查詢相同? 性能考慮因素?

+0

他們是相同的,但與INNER JOIN語法,你應該保持投身於標準和過濾標準在哪裏。遵循這個約定將使故障排除更容易。 –

+0

當然,外部連接的邏輯會發生變化,並取決於您要完成的工作。 –

+1

[JOIN或WHERE中的條件]的可能重複(http://stackoverflow.com/questions/1018952/condition-within-join-or-where)或[使用JOIN而不是WHERE過濾](http:// stackoverflow的.com /問題/ 1907335 /過濾-使用-聯接-代替的最其中) –

回答

2

SQL Server查詢優化器足夠聰明,可以理解這樣做會執行相同的操作,因此他將生成相同的執行計劃。這意味着你會得到同樣的表現。 爲了確保您可以查看執行計劃並進行比較。

退房Execution Plan Basics