InterBase クイック スタート:Part II - インデックスの作成
InterBase クイック スタート:Part II - データ定義 へ戻る
インデックスは、1 のテーブルにおける、1 つまたは複数の列に基づいています。 インデックスは、指定された列の内容を順序付けし、その情報をディスク上に保存することで、それら列へのアクセスを高速化します。 インデックスはデータ抽出のパフォーマンスを向上させますが、ディスク スペースを取り、挿入および更新のスピードを劣化させる可能性があります。 このため、インデックスは大抵、頻繁にクエリがかけられる列で使用されます。インデックスはまた、一意性と、参照整合性の制約を強化します。
InterBase は、UNIQUE
および PRIMARY KEY
の列について、インデックスを自動的に生成します。 制約の詳細については、『データ定義ガイド』を参照してください。
CREATE INDEX
文を使用して、インデックスを作成します。 最も簡略化した構文は次のとおりです:
CREATE INDEX index_name
ON table (columns)
任意で、CREATE INDEX
キーワードに続いて、1 つまたは複数の ASCENDING
、DESCENDING
、UNIQUE
キーワードを追加することができます。
目次
Name インデックスを作成する
次のインデックスを Employee
テーブルに対して定義します:
CREATE INDEX namex
ON Employee (last_name, first_name)
この文は、namex
というインデックスを、Employee
テーブルの列 last_name
と first_name
に対して、定義しています。
デフォルトでは、別のテーブル領域が指定されない限り、インデックスはテーブルと同じテーブル領域に存在します。テーブル領域の詳細については、ドキュメント「テーブル領域」を参照してください。
インデックス エントリの重複を防ぐ
重複エントリをなくすインデックスを定義するには、UNIQUE
キーワードを CREATE INDEX
に含めます。 UNIQUE
インデックスを定義する際、ユーザーはインデックス付けされた列に同じ値がすでに存在する場合には、その値を挿入または更新することはできません。
複数列で定義される一意インデックス(下の例の prodtypex
など)の場合、個々の列には同じ値を入力することはできますが、インデックスのすべての列に入力される値の組み合わせでは、各行が一意に識別できなければなりません。
すでに一意ではない値を含んでいる列に対して、NIQUE
インデックスを作成することはできません。
UNIQUE インデックスを作成する
prodtypex
という名前の一意のインデックスを、Project
テーブル上に作成します:
CREATE UNIQUE INDEX prodtypex
ON Project (product, proj_name)
インデックスのソート順の指定
デフォルトでは、SQL はインデックスを昇順に保持します。 より効率的にするために、列または列グループを降順にソートするには、インデックスを定義する際に DESCENDING
キーワードを使用します。
DESCENDING インデックスを作成する
budgetx
という名のインデックスを降順で作成するには、次のコードを入力、実行します:
CREATE DESCENDING INDEX budgetx
ON Department (budget)
インデックスの変更
インデックス定義を変更するには、まずそのインデックスをドロップし、それから新しいインデックスを作成する必要があります:
Name インデックスを変更する
namex
インデックスの現在の定義をまず調べます。
namex
インデックスはEmployee
テーブルで作成されているため、IBConsole の左ペインで、そのテーブルを選択します。- Employee テーブルを右クリックし、プロパティ を選択します。
- プロパティ ウィンドウのメニュー バーで、インデックスを表示を選択します(
)。
Namex
インデックスがUNIQUE
ではないのが確認できます。- 次の
DROP INDEX
文を入力し、実行します:DROP INDEX namex
- 次の行を入力、実行して、
Namex
インデックスがUNIQUE
キーワードを含むよう再定義します:CREATE UNIQUE INDEX namex ON Employee (last_name, first_name)
- 今一度、
Employee
テーブルの プロパティ ウィンドウを開き、インデックスを表示 を選択します。 - 今度は、
Namex
インデックスがUNIQUE
となっているのが確認できます。
インデックスをテーブル領域に割り当てる
このセクションでは、インデックスをテーブル領域に割り当てる方法について説明します。 ALTER INDEX
句を使用すると、既存のインデックスをテーブル領域に割り当てることができます。
デフォルトでは、すべてのインデックスがテーブル領域
Primary
に属します。 InterBase テーブル領域のコンテキストでは、インデックスをテーブル領域に割り当てると、Primary
から別の既存のテーブル領域に移動します。ALTER INDEX {<tablespace_name> | PRIMARY}
[ALTER TABLESPACE {<tablespace_name> | PRIMARY}]
まず ALTER INDEX
を使用してインデックス NAMEX
を変更し、その後、ALTER TABLESPACE
を使用してインデックス NAMEX
をテーブル領域に employee_tblspc
移動します。
ALTER INDEX NAMEX
ALTER TABLESPACE employee_tblspc
テーブル領域からインデックスを削除する
このセクションでは、データベースからインデックスを削除する方法について説明します。
InterBase テーブル領域のコンテキストでは、テーブル領域からインデックスを削除すると、
Primary
または別の既存のテーブル領域に移動します。ALTER INDEX {<tablespace_name> | PRIMARY}
[ALTER TABLESPACE {<tablespace_name> | PRIMARY}]
まず ALTER INDEX
を使用してインデックス NAMEX
を変更し、その後、ALTER TABLESPACE
を使用してインデックス NAMEX
を Primary
または別の既存のテーブル領域に移動します。
ALTER INDEX NAMEX
ALTER TABLESPACE primary
バックアップの時間です
チュートリアルのこのパートが正常に終了したら、ここでデータベースのバックアップをするといいでしょう。