MySQL加入比较:什么更快,什么是正确的?

时间:2011-08-04 20:43:01

标签: mysql join

我最近遇到过这段SQL:

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

显然,第二种方式需要更多的代码,但是对这两种方法都有客观偏好,哪种方法最快?

3 个答案:

答案 0 :(得分:4)

他们将以相同的速度执行,但每次使用第一种方法时,恐怖分子都会获胜。

第一种方法是sql的非可移植“旧”版本,对于更大的查询,要区分WHERE子句中用于连接表的内容以及用于过滤的内容要困难得多。

答案 1 :(得分:3)

您可以知道的唯一方法是检查执行计划,但隐式和显式内部联接会导致完全相同的执行计划,因此性能没有差异。显式连接更具可读性。

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

答案 2 :(得分: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

因为,连接发生在表级而不是行级,所以它们更快