この文は、指定されたテーブル上にインデックスを作成するために使用します。
CREATE [ UNIQUE ] INDEX [ index-name ] ON table-name ( ordered-column-list ) [ WITH MAX HASH SIZE integer ]
ordered-column-list : ( column-name [ ASC | DESC ], ... )
UNIQUE UNIQUE パラメータによって、インデックス内のすべてのカラムで同じ値を持つローがテーブル内に複数存在しないようにします。各インデックス・キーはユニークであるか、少なくとも 1 つのカラムで NULL を持つ必要があります。
テーブル上の一意性制約とユニーク・インデックスの間には違いがあります。ユニーク・インデックスのカラムは NULL を使用できますが、一意性制約のカラムには使用できません。また、外部キーは、プライマリ・キー、または一意性制約があるカラムを参照できます。ただし、外部キーは、ユニーク・インデックスを参照できません。
ordered-column-list カラムの順序リストです。インデックスのカラム値は、昇順または降順にソートできません。
WITH MAX HASH SIZE このインデックスのハッシュ・サイズをバイト単位で設定します。この値は、データベースに対して有効なデフォルトの MaxHashSize プロパティを上書きします。デフォルトのサイズの詳細については、Ultra Light データベース・プロパティへのアクセスを参照してください。
Ultra Light では、プライマリ・キーと一意性制約のインデックスは自動的に作成されます。
インデックスによって、Ultra Light が特定のローを検索しやすくし、クエリのパフォーマンスを向上させることができます。ただし、インデックスを管理する必要があるので、同期や INSERT、DELETE、UPDATE の各文の処理は低速になる可能性があります。
インデックスは、データベースに対して発行されたクエリのパフォーマンスを向上させたり、ORDER BY 句を使用してクエリをソートするときに自動的に使用されます。インデックスはいったん作成されると、DROP INDEX を使用して削除するときを除いて、SQL 文では二度と参照されません。
インデックスはデータベース内の領域を占有します。また、インデックスの管理に必要な追加作業は、データ修正操作のパフォーマンスに影響する場合があります。このため、クエリのパフォーマンスが向上しないインデックスの作成は避けてください。
CREATE INDEX 文の処理中は、そのインデックスを参照する要求やクエリは処理されません。また、データベースにアクティブなクエリやコミットされていないトランザクションがある場合は CREATE INDEX を実行できません。
Ultra Light では、実行プランを使用してクエリを最適化することもできます。Ultra Light の実行プランを参照してください。
Ultra Light.NET を使用している場合、すべてのデータ・オブジェクト (たとえば ULDataReader) に対して Dispose メソッドも呼び出さないと、この文を実行できません。Dispose メソッドを参照してください。
スキーマの変更が同時に開始された場合、文は解放されません。DDL 文を使用したスキーマ変更を参照してください。
次の文は、Employees テーブルで 2 カラムのインデックスを作成します。
CREATE INDEX employee_name_index ON Employees ( Surname, GivenName ); |
次の文は、ProductID カラム用に SalesOrderItems テーブル上でインデックスを作成します。
CREATE INDEX item_prod ON SalesOrderItems ( ProductID ); |
Copyright © 2009, iAnywhere Solutions, Inc. - SQL Anywhere 11.0.1 |