インデックス

 インデックスはフィールドプロパティとしても設定できますが、ウインドウ上でもう少し細かい設定が可能ですのでここで補足します。

インデックスの効果

 インデックスを設定すると値の検索や並べ替えを高速化することができます。このサイトでサンプルとして挙げているような小さいテーブルでは違いは感じられませんが、行(レコード)数が数千とか数万になってくるとその差が体感できるものと思います。ただし、値の重複が多い列(極端な例では「性別」など)では、設定しても効果が小さいとされています。また、設定することにより値の追加や更新に時間がかかるようになるほか、ファイルサイズが大きくなります。理屈でいえばこうしたメリットとデメリットを比較して利用を判断する必要がありますが、使っていて不満を感じていないのであればあえて設定する必要もないかと思います。
 また、インデックスにより、主キーとは別に一意制約(値の重複を許さない制約)をかけることができますので、ここで設定方法を紹介します。これも用いる機会は多くないかもしれませんが、値を重複させたくない列が複数ある、という場合もありえますので覚えておいて損はないはずです。

設定方法と設定例

フィールドプロパティ画面での設定

 インデックスはフィールドプロパティとしても存在し、通常はこちらで設定するのが早いです。設定値としては「いいえ」「はい(重複あり)」「はい(重複なし)」から選択できます。


 「はい(重複なし)」にした場合、その列(フィールド)には他の行(レコード)と重複する値を記録することができなくなります。右の画面は、試しに「あだな」列について「はい(重複なし)」とした場合の例です。「あだな」列は主キーではありませんが、他の行と重複する値を入力しようとしたためエラーとなっています。
 ただし、主キーとは違い、Nullにすることは可能であり、またNullである行が複数あってもエラーとはなりません。Nullを許可したくない場合はさらに「値要求」プロパティを「はい」にすればOKです。


インデックスウインドウでの設定

 専用の設定用ウインドウによりインデックスの設定を行ってみます。まずは上記の例と同じく「あだな」列の設定を行うこととします。
 リボンにある「インデックス」をクリックします。


 小さいウインドウが現れました。ここには設定されているすべてのインデックスが表示されますが、開いた時点で「学籍番号」というインデックスと「Primary Key」というインデックスがはじめから表示されています。これらは主キーを設定した際に自動的に設定されたものです。
 ここで、「インデックス名」列に「あだな」と直接入力し、「フィールド名」列では「あだな」を選択します。インデックス名は任意で設定可能ですが、特に理由がなければフィールド(列)名と同じで問題ありません。


 以上でインデックスの設定は済みますが、さらに「主キー」「固有」「Null無視」というプロパティが設定できます。なお、設定する際にはそのインデックス名が記された行を選択している必要があります。間違えて別の行を選択した状態で設定してしまわないように注意してください。

 「主キー」…文字どおりその列を主キーとするかどうかであり、つまり主キーの設定がここでもできるということがわかります。
 「固有」…値の重複を許すかどうかの設定です。ここで「はい」とするのは上記のフィールドプロパティによる設定で「はい(重複あり)」とするのと同じであり、「いいえ」とするのは「はい(重複なし)」とするのと同じことです。
 「Null無視」…値がNullである場合にインデックスに含めるかどうかの設定です。勘違いしやすいところですが、Nullの入力を許可するかどうかではありませんので注意してください。


 さて、ちょっとした応用ですが、複数の列の組に対し1つのインデックスを設定することもできます。右のようなテーブルにおいて「クラス番号」「出席番号」の2つの列を1つの組とする1つのインデックスを設定してみます。


 ウインドウを開き、「インデックス名」に任意の名前を入力し、そして「フィールド名」においては2行にわたり「クラス番号」「出席番号」を選択します。
 「インデックス名」の2行目を空白にしておくのがポイントです。2行にわたって同じインデックス名を入力すると、同名のインデックスを二重に定義しようとしているとみなされエラーとなりますので注意してください。


 このインデックスに対しても「主キー」「固有」「Null無視」の設定は可能です。
 試しに「固有」を「はい」にしてみます。


 「クラス番号」列での値の重複も、「出席番号」列での値の重複も許されています。しかしこれら2つの列の値が全体として重複することは許されません。
 主キーにおける複合キーと同じような効果が得られていることがわかります。