CREATE INDEX ステートメント

既存のテーブルに新しいインデックスを作成します。


メモ Microsoft Jet データベース エンジンは、Microsoft Jet データベース以外のデータベースでは CREATE INDEX ステートメントや DDL (データ定義言語) ステートメントを使用できません。ただし、CREATE INDEX ステートメントを使用して ODBC リンク テーブル擬似インデックスを作成することは可能です。Microsoft Jet データベース以外のデータベースでは代わりに DAOCreate 系メソッドを使用してください。詳細については、後の「解説」を参照してください。


構文

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 句を併用すると、次の方法でデータの入力規則を設定できます。

CREATE INDEX ステートメントを使用すると、Microsoft® SQL Server™ のようなインデックスを持たない ODBC データ ソースリンク テーブルに、擬似インデックスを作成することができます。この場合は、リモート サーバーへの権限やアクセス権は必要ありません。また、擬似インデックスが作成されたことはリモート データベースには通知されず、リモート データベースに影響を与えることもありません。リンク テーブルの場合でも、通常のテーブルの場合と同じ構文を使用します。したがって、通常は読み取り専用になっているテーブルに擬似インデックスを作成すると便利です。

ALTER TABLE ステートメントを使用して、テーブルに単一フィールド インデックスまたは複数フィールド インデックスを追加することもできます。ALTER TABLE ステートメントや CREATE INDEX ステートメントで作成したインデックスは、ALTER TABLE ステートメントまたは DROP ステートメントを使用して削除できます。


メモ 既に主キーが設定されているテーブルに新しいインデックスを作成する場合は、予約語 PRIMARY は使用しないでください。使用した場合はエラーになります。


参照
ADD USER ステートメント CREATE USER ステートメントまたは CREATE GROUP ステートメント
ALTER USER ステートメントまたは ALTER DATABASE ステートメント CREATE VIEW ステートメント
ALTER TABLE ステートメント DROP ステートメント
CONSTRAINT 句 DROP USER ステートメントまたは DROP GROUP ステートメント
CREATE PROCEDURE ステートメント GRANT ステートメント
CREATE TABLE ステートメント REVOKE ステートメント

使用例

CREATE INDEX ステートメントの使用例