本文へスキップ

クラスタードインデックスとは?

くらすたーどいんでっくす

クラスターインデックスとは、テーブルのデータ行そのものをインデックスキーの順番に物理的に並べて格納するデータベースの索引方式です。

クラスターインデックス(Clustered Index)とは、リレーショナルデータベースにおいてテーブル物理的なデータ格納順序をインデックスキーの値に一致させる索引構造です。データ行とインデックスが一体化しているため、インデックスを辿ると同時にデータ本体にアクセスできます。

通常のインデックス(非クラスタードインデックス)はデータとは別の領域にキー値とデータの場所(ポインタ)を保持しますが、クラスタードインデックスではインデックスの葉ノードにデータ行そのものが含まれます。B+ツリー構造を使って実装されることが多く、SQL ServerやMySQLのInnoDB(主キーが自動的にクラスタードインデックスになる)が代表的な採用例です。

クラスタードインデックスの主な特徴は以下のとおりです。

  • 主キーや頻繁に範囲検索されるカラムに設定すると、連続するデータを効率よく読み出せる
  • テーブル1つにつき1つだけしか作成できない(物理順序は1通りのため)
  • 挿入・更新時にデータの物理的な並び替えが発生し、断片化(フラグメンテーション)が起きやすい
  • 非クラスタードインデックスからのルックアップは、クラスタードインデックスを経由するため2段階アクセスになる

主キーが連番(AUTO_INCREMENT)の場合は末尾への追加が多く断片化しにくい一方、UUIDのようなランダム値を主キーにすると挿入のたびに並べ替えが生じパフォーマンスが低下します。適切なカラム選択がデータベース設計の重要なポイントです。

使い方・例文

MySQLのInnoDBテーブルで主キーを「注文日時」に設定すると、データが日時順に物理配置されるため「先月の注文一覧」のような範囲クエリが高速になる一方、同テーブルへの非クラスタードインデックスでの検索は主キーを経由する2段階アクセスとなります。

この用語をシェア

𝕏 でポスト LINE

最終更新:

関連用語