既存のテーブルに新しいインデックスを作成します。
メモ Microsoft Jet データベース エンジンは、Microsoft Jet データベース以外のデータベースでは CREATE INDEX ステートメントや DDL (データ定義言語) ステートメントを使用できません。ただし、CREATE INDEX ステートメントを使用して ODBC リンク テーブルに擬似インデックスを作成することは可能です。Microsoft Jet データベース以外のデータベースでは代わりに DAO の Create 系メソッドを使用してください。詳細については、後の「解説」を参照してください。
CREATE [ UNIQUE ] INDEX index
ON table (field [ASC|DESC][, field [ASC|DESC], ...])
[WITH { PRIMARY | DISALLOW NULL | IGNORE NULL }]
CREATE INDEX ステートメントには次の指定項目があります。
指定項目 | 内容 |
---|---|
Index | 作成するインデックスの名前。 |
table | インデックスを作成する既存のテーブルの名前。 |
field | インデックスを付けるフィールドの名前。単一フィールド インデックスを作成するには、テーブル名の後にフィールド名をかっこで囲んで指定します。複数フィールド インデックスを作成するには、インデックスを設定するフィールドの名前をすべて列挙します。また、降順のインデックスを作成するには、予約語 DESC を使用します。DESC による指定がなければ昇順とみなされます。 |
インデックス フィールドの値がレコード間で重複しないようにするには、予約語 UNIQUE を使用します。
WITH 句を併用すると、次の方法でデータの入力規則を設定できます。
DISALLOW NULL オプションを使用すると、新しいレコードのインデックス フィールドに Null 値を入力できなくなります。
IGNORE NULL オプションを使用すると、インデックス フィールドに Null 値が格納されているレコードを、インデックスに入れることができなくなります。
予約語 PRIMARY を使用すると、インデックス フィールドを主キーとして指定します。これによりキーが一意な値になるため、予約語 UNIQUE は省略できます。
CREATE INDEX ステートメントを使用すると、Microsoft® SQL Server™ のようなインデックスを持たない ODBC データ ソースのリンク テーブルに、擬似インデックスを作成することができます。この場合は、リモート サーバーへの権限やアクセス権は必要ありません。また、擬似インデックスが作成されたことはリモート データベースには通知されず、リモート データベースに影響を与えることもありません。リンク テーブルの場合でも、通常のテーブルの場合と同じ構文を使用します。したがって、通常は読み取り専用になっているテーブルに擬似インデックスを作成すると便利です。
ALTER TABLE ステートメントを使用して、テーブルに単一フィールド インデックスまたは複数フィールド インデックスを追加することもできます。ALTER TABLE ステートメントや CREATE INDEX ステートメントで作成したインデックスは、ALTER TABLE ステートメントまたは DROP ステートメントを使用して削除できます。
メモ 既に主キーが設定されているテーブルに新しいインデックスを作成する場合は、予約語 PRIMARY は使用しないでください。使用した場合はエラーになります。