クラスター化インデックス と 非クラスター化インデックスの違い
クラスター化インデックス と 非クラスター化インデックスの違いを紹介します。
クラスター化インデックス
テーブルのデータをインデックスで指定した列の値で並べ替えて格納します。値が同じ場合は2つ目に指定した列の値で並び替えて格納します。データを並び替えて格納するため、1つのテーブルにはクラスター化インデックスは1つしか作成できません。
最もよく使われるソート順の列や範囲検索を多用する列のインデックスに適しています。
メリット
- データが並び替えられて保存されているため、インデックス列のソートが高速です。
- データが並び替えられているため、インデックス列の範囲検索 (between, <, > 演算)が高速です。
デメリット
- テーブル1つに対して1つしかクラスター化インデックスを作成できません。
作成手順
クラスター化インデックスの作成手順はこちらの記事を参照してください。
非クラスター化インデックス
テーブルのデータの並び替えは実施せず、インデックスで指定した列の値に対応するレコードへのポインタがインデックスファイルに格納されます。範囲検索などを実行するケースが少なく。キーが一意の列のインデックスに適しています。
メリット
- キーに対応するレコードの検索は高速です
- 1つのテーブルに複数のインデックスを作成できます。
デメリット
- 範囲検索(between, <, > 演算)ではクラスター化インデックスと比べると速度が遅いです。
- データが並び替えられて格納されていないため、インデックスの列でソートをした場合、クラスター化インデックスと比べると速度が遅いです。
作成手順
非クラスター化インデックスの作成手順はこちらの記事を参照してください。
補足
テーブルのデータはヒープに格納されます。ヒープとは順序付けられていないデータ格納構造です。
著者
iPentec.com の代表。ハードウェア、サーバー投資、管理などを担当。
Office 365やデータベースの記事なども担当。