InterBase クイック スタート:Part II - インデックスの作成

提供: InterBase

InterBase クイック スタート:Part II - データ定義 へ戻る

インデックスは、1 のテーブルにおける、1 つまたは複数の列に基づいています。 インデックスは、指定された列の内容を順序付けし、その情報をディスク上に保存することで、それら列へのアクセスを高速化します。 インデックスはデータ抽出のパフォーマンスを向上させますが、ディスク スペースを取り、挿入および更新のスピードを劣化させる可能性があります。 このため、インデックスは大抵、頻繁にクエリがかけられる列で使用されます。インデックスはまた、一意性と、参照整合性の制約を強化します。

InterBase は、UNIQUE および PRIMARY KEY の列について、インデックスを自動的に生成します。 制約の詳細については、『データ定義ガイド』を参照してください。

CREATE INDEX 文を使用して、インデックスを作成します。 最も簡略化した構文は次のとおりです:

CREATE INDEX index_name
  ON table (columns)

任意で、CREATE INDEX キーワードに続いて、1 つまたは複数の ASCENDINGDESCENDINGUNIQUE キーワードを追加することができます。

Image 025.jpg Name インデックスを作成する

次のインデックスを Employee テーブルに対して定義します:

CREATE INDEX namex
  ON Employee (last_name, first_name)

この文は、namex というインデックスを、Employee テーブルの列 last_namefirst_name に対して、定義しています。

インデックス エントリの重複を防ぐ

重複エントリをなくすインデックスを定義するには、UNIQUE キーワードを CREATE INDEX に含めます。 UNIQUE インデックスを定義する際、ユーザーはインデックス付けされた列に同じ値がすでに存在する場合には、その値を挿入または更新することはできません。

複数列で定義される一意インデックス(下の例の prodtypex など)の場合、個々の列には同じ値を入力することはできますが、インデックスのすべての列に入力される値の組み合わせでは、各行が一意に識別できなければなりません。

すでに一意ではない値を含んでいる列に対して、NIQUE インデックスを作成することはできません。

Image 025.jpg UNIQUE インデックスを作成する

prodtypex という名前の一意のインデックスを、Project テーブル上に作成します:

CREATE UNIQUE INDEX prodtypex
  ON Project (product, proj_name)

インデックスのソート順の指定

デフォルトでは、SQL はインデックスを昇順に保持します。 より効率的にするために、列または列グループを降順にソートするには、インデックスを定義する際に DESCENDING キーワードを使用します。

Image 025.jpg DESCENDING インデックスを作成する

budgetx という名のインデックスを降順で作成するには、次のコードを入力、実行します:

CREATE DESCENDING INDEX budgetx 
  ON Department (budget)

インデックスの変更

インデックス定義を変更するには、まずそのインデックスをドロップし、それから新しいインデックスを作成する必要があります:

Image 025.jpg Name インデックスを変更する

namex インデックスの現在の定義をまず調べます。

  1. namex インデックスは Employee テーブルで作成されているため、IBConsole の左ペインで、そのテーブルを選択します。
  2. Employee テーブルを右クリックし、プロパティ を選択します。
  3. プロパティ ウィンドウのメニュー バーで、インデックスを表示を選択します(IBConsolePropertiesShowIndexes.png)。
  4. Namex インデックスが UNIQUE ではないのが確認できます。
    TutorialIndex1.png
  5. 次の DROP INDEX 文を入力し、実行します:
    DROP INDEX namex
    
  6. 次の行を入力、実行して、Namex インデックスが UNIQUE キーワードを含むよう再定義します:
    CREATE UNIQUE INDEX namex
      ON Employee (last_name, first_name)
    
  7. 今一度、Employee テーブルの プロパティ ウィンドウを開き、インデックスを表示 を選択します。
  8. 今度は、Namex インデックスが UNIQUE となっているのが確認できます。
    TutorialIndex2.png

バックアップの時間です

チュートリアルのこのパートが正常に終了したら、ここでデータベースのバックアップをするといいでしょう。

次は: