さまざまな種類のインデックスを理解すると、MySQL クエリのパフォーマンスを大幅に向上させることができます。この記事では、カバリング インデックス、コンポジット インデックス、カラム インデックスについて詳しく説明し、その使用法に関するよくある質問に答えます。
カバリング インデックス には次のものが含まれます。 WHERE 句で使用される列を除く、クエリによって取得されるすべての列。これにより、クエリ エンジンはテーブル データにアクセスせずに、インデックスから必要なデータを直接取得できます。一方、列インデックスは単一の列に作成されます。
複合インデックスは複数の列に作成されます。列。複合インデックスの左端の部分のみがインデックス付けに使用できるため、インデックス定義内の列の順序は重要です。複合インデックスが (col3,col4) として定義されており、クエリが WHERE 句でcol3 のみを使用する場合、複合インデックスの一部のみが使用されます。
MySQL通常、特定のクエリに対してカーディナリティが最も高いインデックスが選択されます。異なる列に個別のインデックスが存在する状況では、より明確な値を持つインデックスが優先されます。通常、単一のクエリで同じテーブルに対して複数のインデックスを使用することはできません。ただし、サブクエリまたは複合インデックスを回避策として使用できます。
カバー インデックスを使用すると、テーブル データにアクセスする必要がなくなり、パフォーマンスが大幅に向上します。ただし、カバーするインデックスを作成しすぎると、インデックスが肥大化してパフォーマンスが低下する可能性があります。クエリに複数の列が含まれる場合、一般に複合インデックスは列インデックスよりも効率的です。
インデックスの動作は、MyISAM ストレージ エンジンと InnoDB ストレージ エンジン間で若干異なります。 InnoDB では、主キーはすべてのセカンダリ インデックスに暗黙的に含まれ、事実上複合インデックスになります。その結果、InnoDB は、主キーが WHERE 句で明示的に使用されていない場合でも、カバリング インデックスを効率的に使用します。一方、MyISAM にはこの動作がありません。
以上がカバリング インデックス、コンポジット インデックス、またはカラム インデックス: どの MySQL インデックスを使用する必要がありますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。