表にインデクスを定義します。
CREATE INDEX文は,定義系SQL文記述ファイルに記述します。定義系SQL文記述ファイルについては,マニュアル「TP1/EE/Extended Data Cache 使用の手引」を参照してください。
インデクス定義::= |
インデクスを定義するキー値(インデクスとして定義する一つまたは複数の列の全体の値)が,すべての行で異なっている場合に指定します。このようなインデクスをユニークインデクスと呼びます。
UNIQUEを指定している場合に,インデクスの作成または更新時に重複キー値を検出すると,エラーを返します。ただし,ナル値を含むキー値の場合,重複した値があっても重複キーにはなりません。
定義するインデクスのインデクス名を指定します。インデクス名はシステム内で重複できません。インデクス名については,「1.2.8 名前の修飾」を参照してください。
インデクスを定義する表の表名を指定します。表名については,「1.2.8 名前の修飾」を参照してください。
インデクスを定義する列の列名およびインデクスの並び順を指定します。
インデクス用DBエリア指定::=IN DBエリア名
この指定は省略できません。必ず指定してください。
インデクスを格納するインデクス用DBエリア名を指定します。表用DBエリアは指定できません。
インデクスオプションには,同一のオプションを繰り返して指定できません。
インデクス未使用領域指定::=PCTFREE=未使用領域の比率
インデクス作成時のインデクスページ内の未使用領域の比率を指定します。
インデクス未使用領域指定は次の場合に適用されます。そのほかの場合は,PCTFREE=0が仮定されます。
セグメント再利用指定::=SEGMENT REUSE
{再利用契機セグメント数
|(再利用契機セグメント数〔,再利用契機セグメント数増分値〕)
|(,再利用契機セグメント数増分値)
|NOUSE}
インデクスはページを再利用する契機がないため,通常はこの指定を行わないでください。
セグメントの再利用機能を使用する場合に,セグメントの再利用を実行する契機(再利用契機セグメント数または再利用契機セグメント数増分値)を指定します。
セグメントの再利用とは,使用中のインデクスが管理するセグメントで,最後に確保したセグメント内の空きページを使い切った場合,新規セグメントを確保しないで,そのインデクスが管理するセグメントから空きページを検索して,割り当てることをいいます。
この指定を省略した場合は,NOUSEを指定したものとして扱います。
MIN{(a÷2)-100,4036} (単位:バイト) |
MIN{(a÷2)-100,4036} (単位:バイト) |
表3-1 複数列インデクスを構成する列の長さ
項番 | データ型 | 複数列インデクスを構成する列の長さ※1 | ||
---|---|---|---|---|
各列の長さの合計が255バイト以下の場合 | 各列の長さの合計が256バイト以上の場合 | |||
構成列が固定長だけの場合 | 構成列に可変長を含む場合※3 | |||
1 | INTEGER | 5 | 5 | 6 |
2 | SMALLINT※2 | 3 | 3 | 4 |
3 | DECIMAL(m,n) | ↓m÷2↓+2 | ↓m÷2↓+2 | ↓m÷2↓+3 |
4 | CHAR(n) | n+1 | n+1 | n+2 |
5 | VARCHAR(n)※2 | n+1 | - | n+2 |
6 | TIMESTAMP(p) | 8+p÷2 | 8+p÷2 | 9+p÷2 |
7 | ROWID※2 | 13 | 13 | 14 |
CREATE UNIQUE INDEX "IDX1" ON "INSHOKU"("SHOP_CODE" ASC)
IN DBIDX001 PCTFREE = 50
CREATE INDEX "IDX3" ON "INSHOKU"
("SHOP_CODE" ASC,"AREA_CODE" DESC)
IN DBIDX001