機能
インデックスのDSO定義とインデックスのDSI定義を簡略化してインデックスを定義します。
記述形式
参照項番
文字列定数 → “2.1.2 定数”
日本語文字列 → “2.1.3 トークン”
権限
インデックスを定義できるのは、その表の定義者、スキーマの定義者またはその表のINDEX権の保持者です。
一般規則
表に一意性制約を指定した場合、表データを格納する前に当該の列および列群に対するインデックス定義を行うことが必要です。
ただし、データベース簡単運用の場合は、表の一意性制約に対するインデックスをシステムが自動的に定義するため、インデックスを定義する必要はありません。なお、インデックス名は“@”、システムで採番する10桁の数字と“_PK”(PRIMARY KEYの場合)または“_UK”(UNIQUEの場合)を使用して命名します。
格納領域指定で指定するデータベーススペースに対するALLOCATE権が必要です。
インデックスを作成する表の名前を指定します。
DSO定義でPRECEDENCE(1)が指定されたSEQUENTIAL構造の表を指定することはできません。PRECEDENCE(1)が指定されたSEQUENTIAL構造の表にインデックスを定義する場合は、インデックスのDSO定義文およびインデックスのDSI定義文で定義してください。
キー指定は、インデックスキーを構成する列および列の並びを指定します。キー指定中の列または列の並びの組合せが、表定義で指定した一意性制約に対応する列または列の並びの組合せと一致する場合、一意な値を持つインデックスとして定義されます。これ以外の場合、重複する値を持つインデックスとして定義します。
インデックスキーを構成する列に、データ型が概数型またはBLOB型の列名は指定できません。
キー指定で、列の並びが同一のインデックスを定義することはできません。
キー指定の指定方法は以下のとおりです。
同じ列名を2回以上指定することはできません。
列名は、表名で指定する実表の列であることが必要です。
指定できる列の数は、最大64個です。
インデックスキーを構成する列の大きさは、1000バイト以下であることが必要です。
格納領域指定は、インデックスの格納先のデータベーススペースを指定します。
指定されたデータベーススペースは、定義済であることが必要です。インデックス定義により指定されたデータベーススペースに、Symfoware/RDBが自動的にインデックスの格納構造を定義します。
定義される格納構造については、“D.3 格納領域指定時の格納構造”を参照してください。
格納領域指定で指定するデータベーススペースは、関連する表で割り付けたデータベーススペースと同じロググループを使用するものでなければなりません。
インデックスを作成する表が一時表の場合、格納領域指定は指定できません。
インデックスを作成する表がデフォルトデータベーススペースに定義されている場合、格納領域指定は指定できません。
使用例
スキーマ名S1の表T1にインデックス“IXA”を定義します。
CREATE TABLE S1.T1(C1 INT NOT NULL, C2 INT NOT NULL, C3 INT NOT NULL) ON DBSPACE1; CREATE INDEX S1.T1.IXA KEY(C1) ON DBSPACE2;