之间是否有明显的区别:
SELECT userid, username, userdept,
(SELECT deptname FROM depts WHERE deptid=userdept) AS deptname
FROM users
和
SELECT userid, username FROM users
INNER JOIN depts ON depts.deptid=users.userdept
哪一个更好?
答案 0 :(得分:2)
您的第二个查询有更好的效果。
您可以看到此示例:http://www.codersrevolution.com/index.cfm/2008/7/31/MySQL-performance-INNER-JOIN-vs-subselect
答案 1 :(得分:1)
答案 2 :(得分:1)
您也可以在此主题上看到many discussion in SO。
答案 3 :(得分:1)
这两个查询不是同义词。
如果您将INNER JOIN
替换为LEFT JOIN
,它们将是同义词,但如果deptid
不唯一,则子查询可能会失败,而LEFT JOIN
1}}将永远成功。
如果UNIQUE
上有depts.deptid
索引(最可能是,因为此字段很可能是PRIMARY KEY
),那么性能差异可以忽略不计。