Web サイトのコンテンツは MySQL データベースに保存されます。コンテンツの 99% が有効になりますが、一部 (ユーザー、投稿など) は無効になります。ほとんどのクエリは次のように終了しますWHERE (...) AND enabled
フィールド「有効」にインデックスを作成することは良い考えですか?
Web サイトのコンテンツは MySQL データベースに保存されます。コンテンツの 99% が有効になりますが、一部 (ユーザー、投稿など) は無効になります。ほとんどのクエリは次のように終了しますWHERE (...) AND enabled
フィールド「有効」にインデックスを作成することは良い考えですか?
単独でインデックスを作成してもあまり役に立ちませんenabled
。ただし、 ORDER BY 最適化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
WHERE 条件全体と ORDERing をインデックスから直接取得できるため、より高速な結果が得られます。
いつものように、実行しているクエリによって異なります。最も一般的なクエリを説明して、それが何をしているのかを確認する必要があります。