【发布时间】:2014-04-29 09:53:42
【问题描述】:
以下是否有性能差异?
SELECT person.id
FROM person
LEFT JOIN address ON person.id = address.personID
WHERE address.personID IS NOT NULL
对
SELECT person.id
FROM person
INNER JOIN address ON person.id = address.personID
此查询应显示所有具有地址记录的人员 ID(并非全部都有)。如第二个示例所示,此处要做的合乎逻辑的事情是使用内部联接。由于不完全重要的原因(查询是从查询构建器生成的),我可能不得不使用第一种方法。
很好奇影响是什么。 MySQL 在 LEFT JOIN 时是否会做很多额外的工作,然后将该字段与 null 进行比较以减少集合?也许这就是 INNER JOIN 在幕后的工作方式?
【问题讨论】:
-
谷歌搜索 - 左连接不为空与内连接,得到了这个...stackoverflow.com/questions/2726657/…
-
我建议你使用
EXPLAIN,看看执行计划是否不同。
标签: mysql