两者之间是否有明显区别:
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
哪一个更好?
两者之间是否有明显区别:
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
哪一个更好?
您的第二个查询具有更好的性能。
你可以看到这个例子: http: //www.codersrevolution.com/index.cfm/2008/7/31/MySQL-performance-INNER-JOIN-vs-subselect
这两个查询不是同义词。
INNER JOIN
如果您将 替换为,它们将是同义词,但如果子查询不是唯一的,则LEFT JOIN
子查询会失败,而 a将始终成功。deptid
LEFT JOIN
如果有一个UNIQUE
索引depts.deptid
(很可能是,因为这个字段很可能是 a PRIMARY KEY
),那么性能差异可以忽略不计。
您也可以在 SO中看到有关此主题的许多讨论。