クラスタ化インデックス
クラスタ化インデックスとは、テーブルの実データがインデックスキー順に物理的に並んで格納されている方式で、テーブル1つにつき1つしか作れない。
「テーブルの並び方」そのものが索引
通常のインデックスは「別のデータ構造として、テーブルの行を指し示すポインタを持つ」ものですが、クラスタ化インデックスは違います。 テーブル本体を索引キーの順に物理配置してしまうのです。結果、範囲検索や順序スキャンでは連続領域の読み取り一発で済みます。
id BETWEEN AND 該当行が飛び地なので、範囲検索でも各行にランダムアクセスが必要。
該当行が連続領域に固まっているのでシーケンシャル読み取りで効率的。
(page, offset)で、ページ番号とページ内オフセットの組。 クラスタ化表はid順に物理配置されているので、範囲検索の該当行が同じページ内に固まる。「ページの並び順」を意識すると理解が深まる
テーブルはページ単位でディスクに置かれるので、範囲検索の速さは「該当行がどのページに散らばっているか」で決まります。
- 非クラスタ化: 該当行のページは飛び地。範囲検索でも 何ページも別々に読む ランダムI/Oが発生する。
- クラスタ化: 該当行が連続ページに固まっている。先頭ページから順に読む シーケンシャルI/Oで済む(ランダムより数十倍速い)。
非クラスタ化インデックスとの違い
- 非クラスタ化: インデックス側にキーと行ポインタを持つ。範囲検索でも該当行の物理位置は飛び飛び。
- クラスタ化: テーブルの物理的な並びそのもの。範囲検索は連続ブロックのシーケンシャルアクセスで完結。
設計時のポイント
- 「範囲でよく引くカラム」をクラスタキーにするとI/Oが劇的に減る
- 主キーがランダム値(UUID など)の場合、挿入のたびに物理的な再配置が発生してコストが増大するので注意
- 1つしか作れないので、「どの検索を最も速くしたいか」を吟味する
よくある疑問
関連トピック
もっと学びたい方へ(おすすめ書籍)
テーブル設計と正規化、パフォーマンス考慮のインデックス設計まで実務レベルで学べる定番書。第2版ではクラウド対応も強化。
PostgreSQLの内部構造・ストレージ・インデックス機構を丁寧に解説。設計と運用計画の鉄則が学べる。
リレーショナルモデルの理論から、インデックス設計を含む実務で使えるSQLまで解説。
ER 図をどう「使える設計」に落とすか、実務の判断まで踏み込んだ入門書。エンティティの切り出しから多対多の扱いまで具体例が豊富。
ドリル 256 問を実際に打ちながら進める SQL の入門書。付属のブラウザ環境で演習できるので、SELECT から結合・集約までを環境構築で止まらずに通せる。
SQLの本質的な使い方と、インデックスが効くクエリの書き方を学べる。ウィンドウ関数など現代SQLも網羅。
実務でやりがちなSQL・DB設計のアンチパターンとその回避策を体系的に学べる。
IPAデータベーススペシャリスト試験の総合対策書。インデックス関連は本サイトと合わせて学ぶと理解が深まる。
「なぜこの書き方が速いのか」を実行計画から説明する一冊。条件分岐・集約・結合・更新のそれぞれで、良い書き方と悪い書き方を対比しながら読める。
本セクションはAmazonアソシエイトのリンクを含みます。
もっと深くDBを学びたい方へ。
たいてっくが、SQL・データベース設計・パフォーマンスチューニング・IPAデータベーススペシャリスト対策まで、1対1で学習をサポートします。まずは無料相談から。
「教え方も上手で、お人柄も良いメンターです。DB周りの知識はもちろん、何より、しっかり教えてあげようという姿勢がとてもありがたかったです。データベース、SQLの学習を考えている方にはおススメです。」
— H 様(DB・SQL コース受講)「体系的に知識を教えてくださり、実際の業務でも大変役立っております。特に短い時間で効率よく知識の習得や、練習をできているのは期待以上でした。」
— M 様(DB・SQL コース受講)「大変充実したコンテンツでわかりやすいご説明をありがとうございました。基本的な質問にも丁寧にご説明いただき、また業務のご相談にも乗って頂き大変有意義な時間でした。」
— K 様(DB・SQL コース受講)