Symfoware Server RDB運用ガイド(データベース定義編) - FUJITSU -
目次 索引 前ページ次ページ

第2章 データベースの作成> 2.9 格納構造定義の簡略化

2.9.3 インデックス定義

インデックスの定義は、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(16),PAGESIZE2(1), REALIGNMENT)  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は、インデックス定義時のスキーマ名とインデックス名を組合せて命名します。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

■インデックスの格納構

インデックスの格納構は以下のようになります。

格納構造:
BTREE構造
データ部のページ長:
2K
インデックス部のページ長:
2K
データ部の割付け量:
168K
縮退指定:
あり
インデックス部の割付け量:
32K

■インデックスの注釈定

格納構造定義を簡略化してインデックスを定義する場合、インデックスに対して、文字列または各国語文字列で注釈を指定することができます。最大256バイトの文字列を指定することができます。文字列と各国語文字列の両方を注釈として指定することもできます。注釈が不要な場合は、指定を省略します。以下に例を示します。

格納構造を簡略化したインデックスに注釈を付与
CREATE INDEX  STOCKS.在庫表.IDX1  KEY (製品番号, 製品名)

              COMMENT '在庫表のインデックス KEY : 製品番号,製品名'
                                      ↑
                                   注釈定義

              ON  DBSPACE1

目次 索引 前ページ次ページ

All Rights Reserved, Copyright(C) 富士通株式会社 2007-2008