MySQL 嵌入式 SELECT 与 JOIN
Posted
技术标签:
【中文标题】MySQL 嵌入式 SELECT 与 JOIN【英文标题】:MySQL Embedded SELECTs vs. JOINs 【发布时间】:2010-01-25 09:47:48 【问题描述】:两者之间是否有明显区别:
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
哪个更好?
【问题讨论】:
【参考方案1】:您的第二个查询具有更好的性能。
你可以看这个例子:http://www.codersrevolution.com/index.cfm/2008/7/31/mysql-performance-INNER-JOIN-vs-subselect
【讨论】:
【参考方案2】:加入更好,
查看此链接: http://www.selikoff.net/2008/12/10/memo-avoid-nested-queries-in-mysql-at-all-costs/
【讨论】:
【参考方案3】:您也可以在此主题上查看many discussion in SO。
【讨论】:
【参考方案4】:这两个查询不是同义词。
如果您将INNER JOIN
替换为LEFT JOIN
,它们将是同义词,但如果deptid
不是唯一的,则子查询可能会失败,而LEFT JOIN
将始终成功。
如果depts.deptid
上有一个UNIQUE
索引(很可能是,因为该字段很可能是PRIMARY KEY
),那么性能差异可以忽略不计。
【讨论】:
以上是关于MySQL 嵌入式 SELECT 与 JOIN的主要内容,如果未能解决你的问题,请参考以下文章