インデックス

SQLServer【Index編】#S2_12_クラスター化インデックスの内部構造

今回はクラスター化インデックスの内部構造を解説していきます。前回クラスター化インデックスを作成した時に,時間がかかったと思いますが,内部構造を理解すると,時間がかかった意味も理解できると思います。

クラスター化インデックスの内部構造のイメージ

クラスター化インデックスを作成すると,決定的に今までと違いが出ます。それが,今まであった実データの表が無くなるという事です。非クラスター化インデックスしかない場合は,非クラスター化インデックスのリーフページにあるRIDから実データを探しに言っていましたが,今回クラスター化インデックスを作成したことにより,実データはなくなりました。

それでは実データはどこに行ったのかというと,クラスター化インデックスの終端である,リーフページに実データが存在します。クラスター化インデックスも非クラスター化インデックスと同様に,指定した項目の順番でインデックスファイルがツリー状に構成され,それをたどるとリーフページがあるのですが,非クラスター化インデックスの場合は,リープページに実データの所在があったので,そこからもう一度データを探しに行っていましたが,クラスター化インデックスの場合は,リープページに実データがあるため,そこで検索は終了します。なので,クラスター化インデックスシークでデータを見つけるのが,速度的には最速という事になります。

クラスター化インデックスを作成した時に時間がかかったのは,実データを削除して,クラスター化インデックスのリーフページにすべて実データを移動させる必要があるため,時間がかかっていたのです。

クラスター化インデックスの制約

先述の通り,クラスター化インデックスのリーフページに実データが移動されるため,クラスター化インデックスというのは,テーブルに1つしか作成できません。このクラスター化インデックスは最速の検索方法なので,よく考えてクラスター化インデックスは作成する必要があります。

次回は,クラスター化インデックスを作成したことによって起こる変化を解説していきます。

SQLServerインデックスを理解して検索を高速にする方法