今回はクラスター化インデックスの内部構造を解説していきます。前回クラスター化インデックスを作成した時に,時間がかかったと思いますが,内部構造を理解すると,時間がかかった意味も理解できると思います。
クラスター化インデックスの内部構造のイメージ
クラスター化インデックスを作成すると,決定的に今までと違いが出ます。それが,今まであった実データの表が無くなるという事です。非クラスター化インデックスしかない場合は,非クラスター化インデックスのリーフページにあるRIDから実データを探しに言っていましたが,今回クラスター化インデックスを作成したことにより,実データはなくなりました。
それでは実データはどこに行ったのかというと,クラスター化インデックスの終端である,リーフページに実データが存在します。クラスター化インデックスも非クラスター化インデックスと同様に,指定した項目の順番でインデックスファイルがツリー状に構成され,それをたどるとリーフページがあるのですが,非クラスター化インデックスの場合は,リープページに実データの所在があったので,そこからもう一度データを探しに行っていましたが,クラスター化インデックスの場合は,リープページに実データがあるため,そこで検索は終了します。なので,クラスター化インデックスシークでデータを見つけるのが,速度的には最速という事になります。
クラスター化インデックスを作成した時に時間がかかったのは,実データを削除して,クラスター化インデックスのリーフページにすべて実データを移動させる必要があるため,時間がかかっていたのです。
クラスター化インデックスの制約
先述の通り,クラスター化インデックスのリーフページに実データが移動されるため,クラスター化インデックスというのは,テーブルに1つしか作成できません。このクラスター化インデックスは最速の検索方法なので,よく考えてクラスター化インデックスは作成する必要があります。
次回は,クラスター化インデックスを作成したことによって起こる変化を解説していきます。
非売品コース「C#のアーキテクチャー:あなたのコードが複雑な理由」
MVVM+ドメイン駆動+テスト駆動開発でわかりやすく実装する方法」
(動画80分)を無料でプレゼントしています。
#S1_01_はじめに
#S1_02_インデックスとは
#S1_03_インデックスの有無実演
#S1_04_SQLServerのインストール
#S2_01_データベースとテーブルの作成
#S2_02_データの作成
#S2_03_全件検索
#S2_04_キャッシュとは
#S2_05_検索条件ありで検索
#S2_06_テーブルスキャンとは
#S2_07_インデックスの種類
#S2_08_非クラスター化インデックスの作成
#S2_09_非クラスター化インデックスの内部構造
#S2_10_インデックスのない列の検索とインデックスの有効化無効化
#S2_11_クラスター化インデックスの作成
#S2_12_クラスター化インデックスの内部構造
#S2_13_クラスター化インデックスの検索
#S2_14_インデックスの検索補足
#S2_15_付加列インデックス
#S2_16_プライマリキーとユニークキー
#S2_17_インデックス作成手順
#S2_18_インデックスの注意点
おわりに
非売品コース「C#のアーキテクチャー:あなたのコードが複雑な理由」
MVVM+ドメイン駆動+テスト駆動開発でわかりやすく実装する方法」
(動画80分)を無料でプレゼントしています。