トップページへ PASSJ ブログへ
トップページへ
分科会
特集!
コミュニケーション
資格
セミナー・コンファレンス
インフォメーション
11.インデックスキー

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

図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個だけ指定できる特別なインデックスであり、電話帳のようにインデックスの情報と 実際のレコードの値が同じ場所に同じ順番に並ぶ効果が現れます。
列の値に応じて並べ替えを行なったり、値域検索を行なったりする列には、クラスタ化をすると、検索効率が高まります。
通常はテーブルの主キーがクラスタ化インデックスとなりますが、別の列に設定することもあります。

その他のオプションについては、デフォルト値のままにします。


<< 前へ次へ >>
◆PAGE LINK  |  |  |  |  |  |  | コラム |  |  |  | 10 | 11 | 12 | 13 | 14 

PASSJメールニュース 著作権ついて プライバシーポリシー リンクポリシー お問い合わせ
(C) 2005 Professional Association for SQL Server Japan. All rights reserved.