ホームページ > データベース > mysql チュートリアル > カバリング インデックス、コンポジット インデックス、またはカラム インデックス: どの MySQL インデックスを使用する必要がありますか?

カバリング インデックス、コンポジット インデックス、またはカラム インデックス: どの MySQL インデックスを使用する必要がありますか?

Barbara Streisand
リリース: 2024-12-25 11:17:13
オリジナル
642 人が閲覧しました

Covering, Composite, or Column Index: Which MySQL Index Should I Use?

MySQL のインデックス、複合インデックス、列インデックスのカバー

さまざまな種類のインデックスを理解すると、MySQL クエリのパフォーマンスを大幅に向上させることができます。この記事では、カバリング インデックス、コンポジット インデックス、カラム インデックスについて詳しく説明し、その使用法に関するよくある質問に答えます。

カバリング インデックスとカラム インデックス

カバリング インデックス には次のものが含まれます。 WHERE 句で使用される列を除く、クエリによって取得されるすべての列。これにより、クエリ エンジンはテーブル データにアクセスせずに、インデックスから必要なデータを直接取得できます。一方、列インデックスは単一の列に作成されます。

複合インデックスと列インデックス

複合インデックスは複数の列に作成されます。列。複合インデックスの左端の部分のみがインデックス付けに使用できるため、インデックス定義内の列の順序は重要です。複合インデックスが (col3,col4) として定義されており、クエリが WHERE 句でcol3 のみを使用する場合、複合インデックスの一部のみが使用されます。

クエリでのインデックスの使用

MySQL通常、特定のクエリに対してカーディナリティが最も高いインデックスが選択されます。異なる列に個別のインデックスが存在する状況では、より明確な値を持つインデックスが優先されます。通常、単一のクエリで同じテーブルに対して複数のインデックスを使用することはできません。ただし、サブクエリまたは複合インデックスを回避策として使用できます。

パフォーマンスへの影響

カバー インデックスを使用すると、テーブル データにアクセスする必要がなくなり、パフォーマンスが大幅に向上します。ただし、カバーするインデックスを作成しすぎると、インデックスが肥大化してパフォーマンスが低下する可能性があります。クエリに複数の列が含まれる場合、一般に複合インデックスは列インデックスよりも効率的です。

MyISAM と InnoDB の違い

インデックスの動作は、MyISAM ストレージ エンジンと InnoDB ストレージ エンジン間で若干異なります。 InnoDB では、主キーはすべてのセカンダリ インデックスに暗黙的に含まれ、事実上複合インデックスになります。その結果、InnoDB は、主キーが WHERE 句で明示的に使用されていない場合でも、カバリング インデックスを効率的に使用します。一方、MyISAM にはこの動作がありません。

以上がカバリング インデックス、コンポジット インデックス、またはカラム インデックス: どの MySQL インデックスを使用する必要がありますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート