インデックスとステートメントの実行に関する私の基本的な理解では、それらはとにexplain
のみ適用されるようです。ステートメントにインデックスが適用される他の場所/インスタンスはありますか?WHERE
ORDER BY
SELECT
3 に答える
mysqlによって選択されたインデックスでも使用されている正確なフィールドのみを選択している場合は、インデックスのデータを使用できます。
でも; この質問をすることで、インデックスの基本的なポイントとその機能を見逃していることがわかります。より明確に理解するために、マニュアルの1、2章を読むことをお勧めします-http://dev.mysql.com/doc/refman/5.0/en/optimization-indexes.html。これらは主にWHERE句とORDERBY句を実行するために使用されることは非常に論理的です。
あなたは忘れJOINS
ました。FOREIGN KEY制約付きフィールド(少なくともMySQLでは「自動的に」インデックスが付けられる)によって結合されるようにテーブルを設計することが一般的な方法になりました。ただし、例外が発生することもあります。後で作成者を激しく噛むためです。)。
インデックスを設計するときは、次のガイドラインに従ってください。多数の行があるテーブル、クエリのWHERE句またはテーブル結合で使用される列、およびORDERBYおよびGROUPBYクエリで使用される列にインデックスを使用します。
頻繁に更新される列で頻繁に使用されないインデックスは避けてください。さらに、頻繁に更新されるテーブルに多くのインデックスを設定することは避けてください。そうしないと、クエリの挿入時間と更新時間が不必要に長くなります。
クラスター化インデックスと非クラスター化インデックスを適切に使用します。それぞれの目的を理解し、シナリオに適したタイプを選択してください。
カバーインデックスを使用して、頻繁に使用されるステートメントのクエリ実行時間を短縮します。カバーするインデックスは、WHERE句とクエリ列の選択に含まれるすべての列を持つ非クラスター化インデックスです。