2

Web サイトのコンテンツは MySQL データベースに保存されます。コンテンツの 99% が有効になりますが、一部 (ユーザー、投稿など) は無効になります。ほとんどのクエリは次のように終了しますWHERE (...) AND enabled

フィールド「有効」にインデックスを作成することは良い考えですか?

4

1 に答える 1

1

単独でインデックスを作成してもあまり役に立ちませんenabledただし、 ORDER BY 最適化enabledを実現するために、 が含まれる複合インデックスを作成すると便利な場合があります。

たとえば、次のようなものが一般的なクエリであるとします。

SELECT * FROM things WHERE c1='foo' AND enabled=1 ORDER BY c2

インデックスをオンc1にすると、一致する行をすばやく見つけることができますが、c2.

インデックスをオンにc1, c2すると、インデックスから順序付けを実行できるようになり、クエリの並べ替えが大幅に高速化されますが、インデックスに がないと、それenabledが無効になります。で結果を並べ替える前に行を確認します。c1enabledc2

インデックスがenabled, c1, c2またはの場合、 c1, enabled, c2WHERE 条件全体と ORDERing をインデックスから直接取得できるため、より高速な結果が得られます。

いつものように、実行しているクエリによって異なります。最も一般的なクエリを説明して、それが何をしているのかを確認する必要があります。

于 2010-05-28T17:39:39.567 に答える