データの基礎比較

リレーショナルデータベースの「複合インデックス(Composite Index)」と「カバリングインデックス(Covering Index)」の説明として正しいのはどれか?

A.複合インデックスは複数列をキーとして持つインデックスで、先頭列から順にクエリで使用される場合に効果を発揮する。カバリングインデックスはクエリで必要な全列をインデックスに含め、テーブル本体へのアクセスを不要にする。← 正解
✓ 正解です。複合インデックスは複数列を組み合わせたキーを持ち、先頭列が検索条件に含まれる場合に有効です。カバリングインデックスはSELECT・WHERE・ORDER BYで参照される全列をインデックスに含め、テーブル本体(クラスタ化インデックスのリーフノード)へのルックアップを不要にしてI/Oを最小化します。
B.複合インデックスはテーブルの物理行順序を決定し、カバリングインデックスは論理的な結合に使用される。
✗ 物理行順序を決定するのはクラスタ化インデックスの特性です。複合インデックスやカバリングインデックスは非クラスタ化インデックスとして実装されることがほとんどです。
C.カバリングインデックスは主キーにのみ作成可能で、複合インデックスは外部キーにのみ作成できる。
✗ カバリングインデックスは主キーに限定されず、任意の列の組み合わせで作成できます。複合インデックスも主キー・外部キー以外の列に作成可能です。
D.複合インデックスとカバリングインデックスは同一の概念であり、列数が2以上のインデックスをどちらの名称で呼んでも差異はない。
✗ 両者は異なる概念です。複合インデックスは「複数列をキーとして使う」ことを指し、カバリングインデックスは「クエリ実行に必要な全列をインデックスに含める」最適化手法を指します。複合インデックスがカバリングインデックスを兼ねることはありますが、同一概念ではありません。

この問題のポイント

複合インデックスは複数列を組み合わせたキーを持ち、先頭列が検索条件に含まれる場合に有効です。カバリングインデックスはSELECT・WHERE・ORDER BYで参照される全列をインデックスに含め、テーブル本体(クラスタ化インデックスのリーフノード)へのルックアップを不要にしてI/Oを最小化します。

DP-900:Microsoft Azure Data Fundamentals の問題一覧