SQL Server

概要

インデックスのメリットは、データ検索の際に、ハードディスクへのアクセス回数を減らすことができ、 効率的な検索が期待できる。非クラスタ化インデックスもクラスタ化インデックスと同じ B ツリー構造です。

クラスタ化インデックス

テーブルにつき1つ作成することができる。 テーブルでクラスタ化キーを設定すると、そのキー値の昇順にデータが並び替えられて、テーブル内の行データはクラスタ化インデックスによって定められた順序に従って、ハードディスク内で物理的に配置される。だからパフォーマンスが優れます。ただし時間に経つと、データの挿入、削除によって、インデックスの連続性が維持できなくなり、パフォーマンスが劣化するため、インデックスを最適化してインデックスページの連続性を保つことを考慮に入れなければならない。

インデックスの断片化を解消するため、ALTER INDEX ステートメントによって、インデックスの無効化、再構築、再構成によって、またはインデックスに関するオプションの設定によって、既存のテーブルやビュー インデックス (リレーショナルまたは XML) を変更します。

非クラスタ化インデックス

クラスタ化インデックスが存在しないデータページの集まりをヒープと呼ぶ。ヒープでは、データの行の順番は特定の順序では格納されず、データページにも特定の順序はない。

インデックスのサイズを小さくするとよい。例えば int ではなく tinyint などの出来る限り小さいデータ型を使用するようにしたり、char ではなく、varchar を使用して文字の平均サイズを小さくするなど。

データページはクラスタ化インデックスを作成した場合のデータページとは構造が異なり、リンクリスト(前後ページを指すポインタのリスト)はもたない。このような、クラスタ化インデックスが存在しないデータページの集まりをヒープと呼ぶ。

クラスタ化インデックスが存在しない非クラスタ化インデックスでのリーフレベル(インデックスページ)ではポインタとして行識別子(ファイルID、ページID、行ID)を格納していて、その行識別子を使ってヒープへジャンプし直接、検索対象データを探し出すこととなる。

非クラスタ化インデックスは、テーブルに249個まで作成することができる。

複合インデックス

複数カラムに対するインデックスを指定するとき、これを「複合インデックス」と呼ぶ。

インディクスのみを検索する場合、インデックスページから検索結果を取得できるため、データページにアクセスする必要がなくなり、ディスクI/Oとメモリ消費量が減少し、クエリパフォーマンスを向上させることができる。ただし、サイズの大きなカラムをインデックスに含めると、インデックス自体のサイズが肥大化し効率が上がらなくなる可能性があるので、インデックスに含める列は慎重に選択する必要がある。

付加列インデックス

非キー列の場合は次の利点があるからです。

・非キー列には、インデックス キー列として許可されていないデータ型を設定できる。 ・インデックス キー列の数やインデックス キーのサイズを計算するときに、データベース エンジンでは非キー列が考慮されない。

XMLインデックス

XMLデータに対するクエリを頻繁に行うような場合は、xmlデータ型の列にインデックスを設定すると効果的である。



月額たった 1,050円で始められる本格的なお店のホームページ!

コメント:



(画像の文字列を入力して下さい)

トップ   編集 凍結 差分 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2019/12/02 (月) 12:41:54 (1628d)

G|Cg|C@Amazon Yahoo yV

z[y[W yVoC[UNLIMITȂ1~] COiq COsیI