CREATE INDEX ステートメント (Microsoft Access SQL)

適用先: Access 2013、Office 2013

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

注:

Microsoft Access データベース エンジン以外のデータベース の場合、Microsoft Access データベース エンジンでは、CREATE INDEX (ODBC リンク テーブルで擬似インデックスを作成する場合を除く) やデータ定義言語ステートメントを使用できません。 代わりに、DAO の Create メソッドを使用してください。 詳しくは、「解説」セクションを参照してください。

構文

CREATE [ UNIQUE ] INDEX INDEX ON テーブル (フィールド [ASC|DESC][, フィールド [ASC|DESC], ...])[WITH { PRIMARY |NULL を許可しない |IGNORE NULL }]

CREATE INDEX ステートメントには、次の指定項目があります。

パーツ

説明

index

作成されるインデックスの名前です。

table

インデックスを含む既存のテーブルの名前です。

field

インデックスを作成するフィールドの名前。 単一フィールド インデックスを作成するには、テーブル名の後にフィールド名をかっこで囲んで一覧表示します。 複数フィールド インデックスを作成するには、インデックスに含める各フィールドの名前を一覧表示します。 降順インデックスを作成するには、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 予約語を使用しないでください。使用すると、エラーが発生します。

次の使用例では、Employees テーブルの "Home Phone" および "Extension" というフィールドで構成されたインデックスを作成します。

    Sub CreateIndexX1() 
     
        Dim dbs As Database 
     
        ' Modify this line to include the path to Northwind 
        ' on your computer. 
        Set dbs = OpenDatabase("Northwind.mdb") 
     
        ' Create the NewIndex index on the Employees table. 
        dbs.Execute "CREATE INDEX NewIndex ON Employees " _ 
            & "(HomePhone, Extension);" 
     
        dbs.Close 
     
    End Sub 

この例では、CustomerID フィールドを使用して Customers テーブルにインデックスを作成します。 CustomerID フィールドに同じデータを含めることができるレコードは 2 つなく、Null 値は使用できません。

    Sub CreateIndexX2() 
     
        Dim dbs As Database 
     
        ' Modify this line to include the path to Northwind 
        ' on your computer. 
        Set dbs = OpenDatabase("Northwind.mdb") 
     
        ' Create a unique index, CustID, on the  
        ' CustomerID field. 
        dbs.Execute "CREATE UNIQUE INDEX CustID " _ 
            & "ON Customers (CustomerID) " _ 
            & "WITH DISALLOW NULL;" 
     
        dbs.Close 
     
    End Sub