インデックス

SQLServer【Index編】#S2_11_クラスター化インデックスの作成

今回はクラスター化インデックスについて解説していきます。

現状はIdにのみ非クラスター化インデックスを作成しているので,CreateDateなど他の項目で検索すると,TableScanになります。今回はそのCreateDateにクラスター化インデックスを作成してみたいと思います。

クラスター化インデックスの作成

インデックスフォルダーを右クリックし,「新しいインデックス」から「クラスター化インデックス」を選択します。

インデックス名を「ClusteredIndex-CreateDate」としておきます。

「追加」ボタンを押下します。

「CreateDate」にチェックを入れて「OK」ボタンを押下します。

「CreateDate」の行が挿入されたことを確認し,「OK」ボタンを押下します。

クラスター化インデックスは作成に時間がかかります。

数分かかるかもしれませんが,クラスター化インデックスが作成されます。

CreateDate指定で検索を実行

クラスター化インデックスが生成されたら,もう一度,次のSQLを実行します。

前回実行したときは12秒ほどかかっていましたが,1秒未満で取得ができるようになります。

実行プランの確認

インデックスが無い状態で実行したときはTableScanになっていましたが,今回はどのようになっているか確認してみましょう。

今回は「クラスター化インデックスシーク」になっています。

なぜかこれはカタカナになっていますが,非クラスター化インデックスの時のIndexSeekと同じでこれもSeekなので,クラスター化インデックスがうまく機能して,ピンポイントでデータが見つけられたという意味になります。

次回はクラスター化インデックスの内部構造を解説します。

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