Symfoware(R) Server RDBユーザーズガイド データベース定義編 - FUJITSU - |
目次 索引 |
インデックスの定義は、CREATE INDEX文を使用して行います。インデックスを定義するためには、あらかじめ、定義するインデックスに対応する表のDSIを初期化しておくことが必要です。インデックス定義では、インデックスキーの構成列および表のデータを格納するデータベーススペースを指定します。インデックス定義により、インデックスのDSO定義およびインデックスのDSI定義が自動的に行われます。
インデックスにつける名前(インデックス名)を定義します。インデックス名は8文字以内の先頭が英字で始まる英数字、または8文字以内の日本語文字列で指定します。 ただし、システム用の動作環境ファイルでDEFAULT_DSI_NAME=CODEを指定した場合、インデックス名は、36文字以内の先頭が英字で始まる英数字、または18文字以内の各国語文字列を指定することができます。
インデックス定義の削除を行う場合には、削除対象とするインデックス定義をインデックス名で指定します。
インデックスキーとする列を列名で指定します。複数の列を組み合わせて1つのインデックスとすることもできます。
インデックスを格納する、データベーススペースのデータベーススペース名を“ON”のうしろに指定します。
在庫管理データベースの製品番号列と、製品名列の組合せをキーとするインデックスの格納構造を定義する例を以下に示します。インデックス名は“IDX1”とします。
また、インデックスはデータベーススペースDBSPACE1に格納するものとします。
例
在庫表を定義するCREATE INDEX文
CREATE INDEX STOCKS.在庫表.IDX1 KEY(製品番号,製品名) ↑ ↑ ↑ ↑ スキーマ名 表名 インデックス名 列名 ↑ キー指定 COMMENT '在庫表のインデックス KEY : 製品番号,製品名' ↑ 注釈定義 ON DBSPACE1 ← 格納領域指定 ↑ データベーススペース名備考. KEY(製品番号,製品名)は、キー指定です。
なお、上記の指定は、以下の定義をしたのと同じ意味です。
CREATE DSO @STOCKS#IDX1 INDEX ON STOCKS.在庫表(製品番号,製品名) TYPE BTREE(PAGESIZE1(2),PAGESIZE2(2)) BY ADDRESS CREATE DSI @STOCKS#IDX1 INDEX DSO @STOCKS#IDX1 OPTION (DEGENERATE) ALLOCATE BASE ON DBSPACE1 SIZE 168K, INDEX ON DBSPACE1 SIZE 32K
インデックスのDSO名、およびDSI名はインデックス定義時のスキーマ名とインデックス名を組み合わせて命名します。DSO名とDSI名は同じ名前になります。
“ @ スキーマ名{#|@}インデックス名 ” (1) (2) (3) (4) |
(1) 固定プレフィックス
(2) CREATE INDEX文で指定したスキーマ名
(3) #:インデックス名が文字列の場合
@:インデックス名が各国語文字列の場合
(4) CREATE INDEX文で指定したインデックス名
ただし、スキーマ名、インデックス名のいずれか、または両方が各国語文字列の場合には、DSO名およびDSI名は、全体が各国語文字列となります。
システム用の動作環境ファイルでDEFAULT_DSI_NAME=CODEを指定した場合、インデックスのDSO名およびDSI名は、システムで採番する10けたの数字を使用して命名します。
以下に例を示します。
例1
スキーマ名およびインデックス名が文字列の場合
CREATE INDEX STOCKS.在庫表.IDX1 KEY ( …… ) ON DBSPACE1 → DSO名:@STOCKS#IDX1 DSI名:@STOCKS#IDX1
例2
スキーマ名は文字列、インデックス名が各国語文字列の場合
CREATE INDEX STOCKS.在庫表.部品番号IX KEY ( …… ) ON DBSPACE1 → DSO名:@STOCKS@部品番号IX DSI名:@STOCKS@部品番号IX
例3
システム用の動作環境ファイルでDEFAULT_DSI_NAME=CODEを指定した場合
CREATE INDEX STOCKS.在庫表.IND1MASTER KEY ( …… ) ON DBSPACE1 → DSO名:@0000000017 DSI名:@0000000017
インデックスの格納構造は以下のようになります。
格納構造定義を簡略化してインデックスを定義する場合、インデックスに対して、文字列または各国語文字列で注釈を指定することができます。最大256バイトの文字列を指定することができます。文字列と各国語文字列の両方を注釈として指定することもできます。注釈が不要な場合は、指定を省略します。以下に例を示します。
例
格納構造を簡略化したインデックスに注釈をつけます。
CREATE INDEX STOCKS.在庫表.IDX1 KEY(製品番号,製品名) COMMENT '在庫表のインデックス KEY : 製品番号,製品名' ↑ 注釈定義 ON DBSPACE1
目次 索引 |