Hitachi

ノンストップデータベース HiRDB Version 9 システム導入・設計ガイド(Windows(R)用)


13.3.1 分割キーインデクスと非分割キーインデクス

横分割インデクスを設計する前に,分割キーインデクス非分割キーインデクスについて理解する必要があります。

インデクスがある一定の条件を満たすと,そのインデクスは分割キーインデクスになり,条件を満たさないインデクスは非分割キーインデクスになります。この条件は,表が単一列分割か複数列分割かによって異なります。

表の分割条件に一つの列だけを使用している場合を単一列分割といい,表の分割条件に複数の列を使用している場合を複数列分割といいます。

〈この項の構成〉

(1) 単一列分割の場合

次に示すどちらかの条件を満たす場合,そのインデクスは分割キーインデクスになります。

〈条件〉
  • 表を横分割するときに格納条件を指定した列(分割キー)に定義した単一列インデクス

  • 表を横分割するときに格納条件を指定した列(分割キー)を第1構成列とした複数列インデクス

次に示すZAIKO表を例にして,インデクスが分割キーインデクスになる場合を次の図に示します。

図13‒11 分割キーインデクスになる場合(単一列分割の場合)

[図データ]

〔説明〕
CREATE INDEX A12 ON ZAIKO (SCODE ASC)                1
CREATE INDEX A12 ON ZAIKO (SCODE ASC,TANKA DESC)     2
CREATE INDEX A12 ON ZAIKO (TANKA DESC,SCODE ASC)     3
  1. 分割キーであるSCODE列をインデクスとした場合,そのインデクスは分割キーインデクスになります。そのほかの列をインデクスとした場合,そのインデクスは非分割キーインデクスになります。

  2. 分割キーであるSCODE列を複数列インデクスの第1構成列にすると,その複数列インデクスは分割キーインデクスになります。

  3. 分割キーであるSCODE列を第1構成列以外に指定すると,その複数列インデクスは非分割キーインデクスになります。

(2) 複数列分割の場合

次に示す条件を満たす場合,そのインデクスは分割キーインデクスになります。

〈条件〉
  • 分割キーを先頭とし,分割に指定した列を先頭から同順にすべて含んで,複数の列に作成したインデクス

次に示すZAIKO表を例にして,インデクスが分割キーインデクスになる場合を次の図に示します。

図13‒12 分割キーインデクスになる場合(複数列分割の場合)

[図データ]

〔説明〕
CREATE INDEX A12 ON ZAIKO (SCODE ASC,TANKA DESC)               1
CREATE INDEX A12 ON ZAIKO (SCODE ASC,TANKA DESC,ZSURYO ASC)    2
CREATE INDEX A12 ON ZAIKO (TANKA DESC,SCODE ASC)               3
CREATE INDEX A12 ON ZAIKO (SCODE ASC,ZSURYO DESC,TANKA ASC)    4
  1. すべての分割キー(SCODE及びTANKA列)を指定し,かつ分割キーの指定順序が表定義時と同じため,この複数列インデクスは分割キーインデクスになります。

  2. すべての分割キー(SCODE及びTANKA列)を指定し,かつ分割キーの指定順序が表定義時と同じため,この複数列インデクスは分割キーインデクスになります。

  3. すべての分割キー(SCODE及びTANKA列)を指定しているが,分割キーの指定順序が表定義時と異なるため,この複数列インデクスは非分割キーインデクスになります。

  4. すべての分割キー(SCODE及びTANKA列)を指定しているが,分割キーの指定順序が表定義時と異なるため,この複数列インデクスは非分割キーインデクスになります。