2011-02-03 14 views
1

mysqlと索引付けの結合に関する簡単な質問がありました。私は2つのテーブルがあった場合:mysqlデータベースの結合の索引付け

table1 
id 
name 

table2 
table1id 
table2title 

をそして私はidとtable1idを使用して表2とTABLE1に参加し、私は表2にTABLE1とtable1id上のIDにインデックスを追加しますか?または、テーブルの1つにインデックスを追加するだけですか?私のMySQLをMyISAMバージョン5.xで使用しています

答えて

3

table1idがプライマリキーであるため、インデックスを作成する必要はありません。 (主キーは自動的に索引付けされます) そうでなければ、table1を索引付けする必要があります。 idおよびtable2table1id

「EXPLAIN」を使用して、どのインデックスが表示されているかを選択します。

2

はい、idの両方の列にインデックスを追加してください(別のポスターはprimaryの列が索引付けされています)。インデックスを使用すると、MySQLはquickly locateのデータファイル内の行を順番に読み取るのではなく、その行にすることができます。

idを指定して両方のテーブルの行が必要な場合は、最適なパフォーマンスを得るために両方のテーブルをインデックスします。そうでなければ、最初の節(SELECT...WHERE)はすぐに実行され、JOINは遅くなり(逆もまた同様)、クエリが遅くなります。

関連する問題