2017-08-02 27 views
0

請承擔這個查詢:在where子句中使用條件更好還是加入子句?

SELECT p.* FROM posts p 
JOIN posts_tags pt ON pt.post_id = p.id 
JOIN tags t ON pt.tag_id = t.id AND t.name = 'php' 

SELECT p.* FROM posts p 
JOIN posts_tags pt ON pt.post_id = p.id 
JOIN tags t ON pt.tag_id = t.id 
WHERE t.name = 'php' 

如你所知,都有一個相同的結果。但是這個條件t.name = 'php'在第一個查詢中是JOIN子句,並且它在第二個查詢上的WHERE子句中。我想知道哪一個更好,爲什麼?

+1

他們是內部相同的連接。該位置對外連接有所不同。 –

+0

@GordonLinoff *績效觀點*,他們是否一樣? –

+2

結果查詢計劃將是相同的。這些是等同的查詢。 –

回答

0

通常,在Where子句中添加條件,使代碼更清晰。將它們添加到AND子句時,它會給出JOIN基於兩個字段的組合的感覺。

將條件添加到Where子句中,可能有助於優化程序在連接之前過濾掉記錄(如果是大表)。我建議將它保留在WHERE條款中。

編輯 另外,請參閱此相關的帖子:Join best practices