次の間に顕著な違いがありますか?
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場合は失敗する可能性がありますが、は常に成功します。deptidLEFT JOIN
UNIQUEにインデックスがある場合depts.deptid(このフィールドはおそらくaであるため、おそらくそうですPRIMARY KEY)、パフォーマンスの違いはごくわずかです。