0

質問がありますSELECT.. WHERE user_id='' && date>:expire && used=0;

インデックスを作成しようとすると。次のような1つのクエリですべて一緒に作成する必要がありますか

CREATE INDEX new_index ON table (user_id, date, used)

または、それらを分離して各列のインデックスを作成する必要がありますか?

4

2 に答える 2

1

これは、これらの列のクエリをどのように計画するかに大きく依存します。最も安全な方法は、列ごとにインデックスを作成することですが、最適なパフォーマンスが得られない場合があります。

複数列インデックスは、次の場合に役立ちます。

  • 列値の組み合わせ全体に一意の制約を適用する必要があります
  • 特定の組み合わせで、結合、where 句、order by、group by などに常に列を使用することがわかっています。

たとえば、提案したコンボ インデックス (user_id、date、used) の場合、次の条件でのみインデックスを利用できます。

  • あなたはuser_idでのみjoin、whereなどを行っています
  • user_idとdateでjoin、whereなどを行っています
  • 3つの列すべてでjoin、whereなどを行っています

これらの場合、インデックスを利用することはできません

  • デートや単体での使用、合体、場所などをしている
  • デートで入会、場所などをしている、利用している

さらに読むために、マルチカラム インデックスに関する MySQL ドキュメントを次に示します。

http://dev.mysql.com/doc/refman/5.5/en/multiple-column-indexes.html

于 2013-09-18T16:31:23.000 に答える