我有兩個下面的例子。SQL JOIN在哪裏放置WHERE條件?
1例(WHERE)
SELECT 1
FROM table1 t1
JOIN table2 t2 ON t1.id = t2.id
WHERE t2.field = true
2例(加入和)
SELECT 1
FROM table1 t1
JOIN table2 t2 ON t1.id = t2.id AND t2.field = true
什麼是性能方面的更快的方法?你喜歡哪個?
此答案包含一些錯誤和混亂的文字。 1.對於INNER JOIN,只要沒有插入的OUTER JOIN,任何條件都可以在WHERE而不是ON。 2.當將LEFT JOIN條件從ON移動到WHERE時,由於(如您所說)一般情況下結果不同,所以性能無關。 3.這種差異通常不會將「外部連接轉換爲內部連接」。 – philipxy 2016-06-27 12:16:01
@philipxy你是對的,我試圖清理一下 – Sebas 2017-05-01 10:44:37
「過濾器在JOIN條件下功能上進入」還是「[過濾器]是實際連接條件,而不僅僅是過濾器」是什麼意思?無論如何,「只是一個過濾器」的概念是沒有用的,因爲'JOIN ON c AND d'與'JOIN ON c WHERE d'相同。 (實際上,SQL標準*根據JOIN WHERE定義* JOIN ON。)類似地,「隱式地取消條件的OUTER特性」*僅僅不傳遞任何東西*。你似乎同意你的看法,因爲你用恐嚇引語(因此本身不清楚)對它進行註釋「(」即使沒有記錄也加入)「。你沒有解釋。 – philipxy 2017-05-01 11:01:35