|
図26では、インデックス関係の情報が表示されます。
特定の列のデータを頻繁に検索する場合は、その列にインデックスを設定しましょう。

図26:インデックスキーの表示
インデックスの情報も、ファイルグループ設計の対象となります。大規模なデータベースでは、インデックス情報は高速アクセスができるDISKに記憶します。
ファイルグループの設計を行わない場合はPRIMARYファイルグループとなり、テーブルの列と同じ場所に記憶されます。
列のユニーク性(一意性)を実現するためには、UNIQUEの作成を行ないます。その実現方法には「制約」で行なう方法と「インデックス」で行なう方法の2種類ありますが、この使い分けは初心者の方は混乱すると思いますので、簡単に説明します。
制約とは、列のUNIQUE制約宣言でユニーク性を実現する意味です。内部的にはユニークなインデックスが作成されますが、ユニークなインデックスとUNIQUE制約とは形式上の区別を行ないます(このまぎらわしさが、混乱の原因となるのですが……)。
UNIQUE制約で実現するユニーク性とは、列の意味自体にユニーク性がある場合です。たとえば社会保険番号のような値は、値そのものが重複しないように設計されています。このため「社会保険番号」列は、UNIQUE制約でそのユニーク性を宣言しましょう。
一方、ユニークなインデックスを作成することによって列のユニーク性を実現する方法は、テーブルの列の値自体には重複な値を挿入しても構わないが、インデックスの値が重複しては困るという意味があります。
この意味の違いによって、たとえば100レコードを一括してテーブルに登録する場合にたまたま1レコードが重複した場合は、
UNIQUE制約を宣言している場合は、
残念ながら1レコードの重複違反のために、残り99レコードの挿入はキャンセルされます。
ユニークなインデックスを作成している場合は、
「重複するキーを無視する」のオプションが無いときは、UNIQUE制約と同じように全部のレコード挿入がキャンセルされます。
このオプションが有るときは、重複したレコードだけを無視して、残りのレコード挿入は正常に実行されます。
といった違いがあります。
なお詳しい解説は、
私の著書「SQL
Server7.0 MSDE 完全トレーニングテキスト 下」 の第13章
SQL13_01.SQLプログラム
SQL13_02.SQLプログラム
などをご参照ください。
CLUSTERED(クラスタード)インデックスとは、テーブルの中に1個だけ指定できる特別なインデックスであり、電話帳のようにインデックスの情報と
実際のレコードの値が同じ場所に同じ順番に並ぶ効果が現れます。
列の値に応じて並べ替えを行なったり、値域検索を行なったりする列には、クラスタ化をすると、検索効率が高まります。
通常はテーブルの主キーがクラスタ化インデックスとなりますが、別の列に設定することもあります。
その他のオプションについては、デフォルト値のままにします。
|