4

两者之间是否有明显区别:

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

哪一个更好?

4

4 回答 4

2

您的第二个查询具有更好的性能。

你可以看到这个例子: http: //www.codersrevolution.com/index.cfm/2008/7/31/MySQL-performance-INNER-JOIN-vs-subselect

于 2010-01-25T09:53:57.203 回答
1

这两个查询不是同义词。

INNER JOIN如果您将 替换为,它们将是同义词,但如果子查询不是唯一的,则LEFT JOIN子查询会失败,而 a将始终成功。deptidLEFT JOIN

如果有一个UNIQUE索引depts.deptid(很可能是,因为这个字段很可能是 a PRIMARY KEY),那么性能差异可以忽略不计。

于 2010-01-25T14:04:59.250 回答
1

您也可以在 SO中看到有关此主题的许多讨论。

于 2010-01-25T09:54:05.210 回答
1

加入更好,

看到这个链接: http ://www.selikoff.net/2008/12/10/memo-avoid-nested-queries-in-mysql-at-all-costs/

于 2010-01-25T09:52:19.313 回答