2011-08-04 16 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 

因为,加入以表级别而不是行级发生他们更快

相关问题