次の間に顕著な違いがありますか?
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
どちらがいいですか?
2番目のクエリのパフォーマンスが向上します。
この例を見ることができます:http://www.codersrevolution.com/index.cfm/2008/7/31/MySQL-performance-INNER-JOIN-vs-subselect
参加する方がいいです、
このリンクを参照してください: http ://www.selikoff.net/2008/12/10/memo-avoid-nested-queries-in-mysql-at-all-costs/
このトピックに関するSOの多くの議論も見ることができます。
これらの2つのクエリは同義語ではありません。
INNER JOIN
をに置き換えた場合、それらは同義語になります。ただし、サブクエリが一意でないLEFT JOIN
場合は失敗する可能性がありますが、は常に成功します。deptid
LEFT JOIN
UNIQUE
にインデックスがある場合depts.deptid
(このフィールドはおそらくaであるため、おそらくそうですPRIMARY KEY
)、パフォーマンスの違いはごくわずかです。