私は、注文が重要な複数の列のインデックスを作成するときに、通常、WHERE句に最初に表示される列がORDER BYしかし、別々にインデックスを作成するだけでスピードアップすることはできませんか? (明らかに私自身の実験では、結合されたインデックスの振る舞いは、単にそれぞれを別々にインデックス化するよりもずっと速いことがわかります)。どのような場合に複数列のインデックスを使用する必要がありますか?いつMYSQLの1つのインデックスよりも2つより良いインデックス
答えて
マルチカラムインデックスは、すべての条件がマルチカラムインデックスの一部である場合に最も効果的です。複数の単一インデックスを持つよりもさらに効果的です。
マルチカラムインデックスを使用していて、マルチカラムインデックスでインデックスされた最初のカラムを使用していない場合(または、最初から開始していない、使用されているインデックス)、マルチカラムインデックスは何のメリットもありません。 (たとえば、列[B、C、D]にインデックスがあり、[C、D]のみを使用するWHEREがある場合は、このマルチカラムインデックスには効果がありません)。
参照:http://dev.mysql.com/doc/refman/5.0/en/multiple-column-indexes.html :インデックス内のすべての 列をテストするクエリ、または試験ちょうど最初の列、 最初の2列、第3列、などクエリに複数列のインデックスを使用することができ
のMySQL。インデックス定義で正しい順序で列を と指定した場合、単一の 複合インデックスは、同じ テーブルで複数の種類のクエリを高速化できます。
2番目のステートメントは、少なくともSQL Serverでは100%正しいとは言えませんが、MYSQLと同じものと思われます。 –
@MitchWheat - 正確であることが確認されたMySQLのドキュメントからの回答を更新しました。 – ziesemer
私は、colA、colB、colCのインデックスがcolB + colCのカラムでクエリで使用されることがありますが、colAではないという事実を指していました。 –
短い答えは、「それは依存します」です。
長い答えはこれです:あなたは時々
WHERE COL1 = value1 and COL2 = value2
を行い、時には
WHERE COL1 = value1
決して、あるいはほとんどない操作を行い、その後、複合インデックスを
WHERE COL2 = value2
をすれば(COL1、COL2)が最適です。 (MySQLの場合はもちろん、DBMSの他のメーカーやモデルと同様に)
インデックスの数が増えると、INSERTとUPDATEの操作が遅くなるため、空き領域にはなりません。
複合インデックス(C1、C2)次の場合に非常に有用である:
- C1 = V1とC2 = v2の
- 明白な場合、あなたはWHERE C1 = V1とC2との間をすればv2とv3 - 複合インデックスの "レンジスキャン"を行います。
- SELECT ... FROM t WHERE c1 = v1 ORDER BY c2 - この場合、インデックスを使用して結果を並べ替えることができます。いくつかの場合、「カバー指数」として、例えば、 "SELECT c1、c2 FROM t WHERE c1 = 4"はテーブルの内容を無視し、インデックスから(範囲)をフェッチするだけです。
- 1. 1つの言語がより良い別のもの
- 2. MySQLは2つのインデックスを1つに結合します
- 3. 2dsphere対2dインデックス:「より良い」/より速い?
- 4. 複数の列インデックスがmysqlの単一列インデックスよりも遅い
- 5. MySQL:2つのブール型フィールドのインデックス
- 6. より高いz-インデックスを持つ要素上のマウスホイール
- 7. MySQLインデックス:2つのフィールドのインデックス方法の違いは何ですか?
- 8. TFS - 良い練習 - 1つのステーションでより多くのユーザー
- 9. 空間インデックスと2つの座標インデックス
- 10. MySQLインデックス:1つのキー名複数の列または1列あたり1つのキー名?
- 11. 2つの配列間の最も近い点のインデックス
- 12. 2つの同じ列を持つMySQLインデックス
- 13. 1つのフィールドが前のレコードよりも小さく、1つのフィールドが大きいMySQL選択行
- 14. Codeigniterアクティブレコード "JOIN" 2つのインデックス
- 15. 2つのdivブロックz-インデックス
- 16. 他のパラメータよりも1つのパラメータの収束が速い
- 17. インデックスより良く、速く、何
- 18. (DBMS内の)インデックスが不良インデックスとなるのはいつですか?
- 19. 私はネストされている2つのリソース持つインデックス
- 20. 2つのカラムを持つMySQLインデックスは、そのうちの1つは外部キーです
- 21. 2つのインデックスのmysql結合に時間がかかります!
- 22. 2つのJava RPC呼び出しまたは1つより
- 23. インデックスのリストの開始の合計がXより大きいリスト内のアイテムのインデックスを見つける
- 24. R:topicmodels、2つの似たような文書、1つのコードは、もう1つはdoesnt、もう1つは
- 25. どのように2つのテーブルmysqlのインデックスを作成するには?
- 26. FosElasticaBundle:1つのインデックスに複数のタイプがあります
- 27. MySQLインデックスのBツリーのノードにはいくつのエントリがありますか?
- 28. 2つのソリューション、1つはNugetパッケージなし、もう1つはNugetパッケージあり
- 29. Ajax returnTextには2つの空のインデックスがあります
- 30. Elasticsearch:インデックスのワイルドカード検索から1つのドキュメントを見つけよう
はい。そしてそれは... –