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

2番目のクエリのパフォーマンスが向上します。

この例を見ることができます:http://www.codersrevolution.com/index.cfm/2008/7/31/MySQL-performance-INNER-JOIN-vs-subselect

于 2010-01-25T09:53:57.203 に答える
1

参加する方がいいです、

このリンクを参照してください: http ://www.selikoff.net/2008/12/10/memo-avoid-nested-queries-in-mysql-at-all-costs/

于 2010-01-25T09:52:19.313 に答える
1

このトピックに関するSOの多くの議論も見ることができます。

于 2010-01-25T09:54:05.210 に答える
1

これらの2つのクエリは同義語ではありません。

INNER JOINをに置き換えた場合、それらは同義語になります。ただし、サブクエリが一意でないLEFT JOIN場合は失敗する可能性がありますが、は常に成功します。deptidLEFT JOIN

UNIQUEにインデックスがある場合depts.deptid(このフィールドはおそらくaであるため、おそらくそうですPRIMARY KEY)、パフォーマンスの違いはごくわずかです。

于 2010-01-25T14:04:59.250 に答える