インデックス「有効」フィールドは良いアイデアですか?
-
05-10-2019 - |
質問
Webサイトのコンテンツは、MySQLデータベースに保存されます。コンテンツの99%が有効になりますが、一部(ユーザー、投稿など)は無効になります。ほとんどのクエリはASを終了します WHERE (...) AND enabled
フィールドに「有効」にインデックスを作成することをお勧めしますか?
解決
インデックスを作成するだけではあまり役に立たないでしょう enabled
1人。しかし、複合インデックスを作成すると便利かもしれません enabled
達成するために含まれています 最適化による注文.
たとえば、このようなものが一般的なクエリであった場合:
SELECT * FROM things WHERE c1='foo' AND enabled=1 ORDER BY c2
インデックスオン c1
一致する行を迅速に見つけることができますが、それでも別のステップでソートする必要があります c2
.
インデックスオン c1, c2
順序付けがインデックスから行われることを許可し、クエリのソートを大幅に高速化する必要がありますが、 enabled
インデックスでは、それを打ち負かすでしょう。 c1
, それから 各行をスキャンして確認します enabled
結果をソートする前に c2
.
インデックスがあった場合 enabled, c1, c2
また c1, enabled, c2
, 、条件と順序がインデックスから直接取得できる全体を、より速い結果を得ることができます。
いつものように、それはあなたがしているクエリに依存します。あなたがすべき 説明 あなたの最も一般的な質問は、それが何をしているのかを確実にチェックします。
所属していません StackOverflow