2017-08-16 49 views
1

原則,其中之一是更快地講:MySQL性能 - JOIN ON VS JOIN上使用多個表

SELECT FROM t1 INNER JOIN t2 INNER JOIN t3 ON t1.c = t2.c = t3.c 

VS

SELECT FROM t1 INNER JOIN t2 USING (c) INNER JOIN t3 USING (c) 
+1

請閱讀此http://meta.stackoverflow.com/a/271056/。請特別注意查詢性能部分。然後,請[編輯]你的問題。如果你不這樣做,你可以問問*旅程有多長時間?* –

+1

可能的表現是相同的(不確定100%),但是請注意'USING'和'ON'有時會給出一些不同的結果:https://stackoverflow.com/questions/45605943/mysql-unable-to-get-all-columns-with-select/45606545#45606545 –

+0

我一直以爲第一個會是一個錯誤(缺少或使用第一次加入的子句) – ysth

回答

1

最簡單的方法你告訴這將是看在你的explain plan。如果你看兩者,你可能會看到零差異。

這裏的using()這個關鍵詞只是一個簡寫表達式。它的評估與您的其他選項相同,因此對性能沒有影響。

0

任何SQL語句的FROM部分在SQL語句的任何其他部分之前被邏輯處理,並且兩個語句都在FROM部分中加入(不要將連接條件添加到WHERE子句中)。假設兩者都具有正確的語法,那麼更大的問題是它們是否從M:1,M:1上下文流入,以及主鍵和外鍵是否有索引。然後通過查詢分析器運行它們以測量實際性能。