MySQL嵌入式SELECT与JOIN相比

时间:2010-01-25 09:47:48

标签: mysql query-performance

之间是否有明显的区别:

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 个答案:

答案 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),那么性能差异可以忽略不计。