インデックス

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

それでは今回は「非クラスター化インデックス」を作成していきます。

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

それでは非クラスター化インデックスの作成をしていきましょう。「IndA」の階層を開き,「テーブル」「Shain」の順に開いていきます。そうすると,その中に「インデックス」というフォルダーがあります。これも開いてもらうと,中には何も入っていないことが分かります。つまり,現状「Shain」テーブルには「インデックス」は存在しないという意味です。

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

「新しいインデックス」の画面が表示されたら,まず「インデックス名」のところを,「NonClusteredIndex-Id」という名前にします。今回は「Id」での非クラスター化インデックスを作成するのでこういった名前にしました。実際現場で命名する場合は,現場の命名規約に合わせた名前を付けてください。

次に「インデックスキー列」のタブが選択されている状態で「追加」ボタンをクリックします。

列の選択画面が表示されるので,「Id」のチェックボックスにチェックを入れて「OK」ボタンを押下します。

すると最初の画面に「Id」の列が追加された状態になるので,「OK」ボタンを押下し,非クラスター化インデックスを作成します。

これで,「インデックス」フォルダーの中に,非クラスター化インデックスが作成されたことが確認できます。

検索条件ありで検索を実行

非クラスター化インデックスが作成された状態で,もう一度以前実施していた「Id=1」の検索条件で検索を実行してみます。

DBCC DROPCLEANBUFFERS
DBCC FREEPROCCACHE
select * from Shain
where Id = 1

すると,以前は12秒かかっていた検索が,1秒未満で完了しました。

実行プランの確認

前回まではTableScanになっていましたが,今回は状況が変わっています。

IndexSeek

まず,IndexSeekになっているところに注目してください。

「Seek」とは「ピンポイントでデータを見つけました」という意味です。IndexSeekなので,「インデックスを使って,ピンポイントでデータを見つけた」という意味になります。いままでは「TableScan」でした。スキャンは「全部読んだ」という意味なのですが,「Seek」はピンポイントで見つけたという事なので,インデックスがうまく機能したという事です。

ScanかSeekか?

先述の通り,インデックスが機能しているかどうかをチェックする場合は,「Scan」か「Seek」のどちらなのかに注目してください。Scanなら全部読んだ,Seekならピンポイントで見つけられたという事なので,基本的には「Seek」になっていれば成功という事です。

RIDLookup

実行プランにはIndexSeekのほかに「RIDLookup」というものも存在します。

これは,非クラスター化インデックスの内部構造が分からないと,理解ができないと思うので,次回,非クラスター化インデックスの内部構造を解説する時に一緒に解説します。

次回は非クラスター化インデックスの内部構造を解説するなかで,IndexSeekがどういった動作なのか,そして,RIDLookupがどういった動作をしているのか?という事を解説していきます。

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

#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_インデックスの注意点
おわりに

参考図書

SQL

SQL Server 2016の教科書 開発編

SQL Server Transact-SQLプログラミング 実践開発ガイド

SQLクックブック 第2版 ―データベースエキスパート、データサイエンティストのための実践レシピ集

達人に学ぶSQL徹底指南書 第2版 初級者で終わりたくないあなたへ

SQL Server 2016データベース構築・管理ガイド Enterprise対応

設計

達人に学ぶDB設計 徹底指南書

内部構造

絵で見てわかるSQL Serverの仕組み

アドバンストMS SQL SERVER 2008 構築・管理 (マイクロソフトコンサルティングサービステクニカルリファレンスシリーズ)