2011-08-04 19 views
3

我最近遇到這一塊的SQL傳來:MySQL連接比較:更快,什麼是正確的?

SELECT members.id 
FROM members, members_to_groups 
WHERE members.id = members_to_groups.memberId 
    AND members_to_groups.groupId = 1 

現在我只是永遠不會有這樣做的加入這種方式,而不是使用內部的想法加入:

SELECT members.id 
FROM members 
INNER JOIN members_to_groups ON members.id = members_to_groups.memberId 
WHERE members_to_groups.groupId = 1 

顯然第二種方式這樣做需要更多的代碼,但是對於任何一種方法都有一個客觀的偏好,哪一個會執行得最快?

回答

4

他們都會以相同的速度執行,但每次使用第一種方法恐怖分子都會贏。

第一種方法是sql的一個不可移植的「舊」版本,對於更大的查詢,要區分什麼是WHERE子句用於連接表,以及用於過濾的內容要困難得多。

3

您可以知道的唯一方法是通過檢查執行計劃,但隱式和顯式內部聯接導致完全相同的執行計劃,因此性能沒有差異。顯式連接更具可讀性。

另外,@ gbn說implicit joins are not valid semantically。 :)

0
WHERE members.id = members_to_groups.memberId => occurs at row level 

INNER JOIN members_to_groups ON members.id = members_to_groups.memberId => occurs at table level 

因爲,加入以表級別而不是行級發生他們更快

相關問題