13.3.1 分割キーインデクスと非分割キーインデクス
横分割インデクスを設計する前に,分割キーインデクスと非分割キーインデクスについて理解する必要があります。
インデクスがある一定の条件を満たすと,そのインデクスは分割キーインデクスになり,条件を満たさないインデクスは非分割キーインデクスになります。この条件は,表が単一列分割か複数列分割かによって異なります。
- 〈この項の構成〉
(1) 単一列分割の場合
次に示すどちらかの条件を満たす場合,そのインデクスは分割キーインデクスになります。
- 〈条件〉
-
-
表を横分割するときに格納条件を指定した列(分割キー)に定義した単一列インデクス
-
表を横分割するときに格納条件を指定した列(分割キー)を第1構成列とした複数列インデクス
-
次に示すZAIKO表を例にして,インデクスが分割キーインデクスになる場合を次の図に示します。
- 〔説明〕
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
-
分割キーであるSCODE列をインデクスとした場合,そのインデクスは分割キーインデクスになります。そのほかの列をインデクスとした場合,そのインデクスは非分割キーインデクスになります。
-
分割キーであるSCODE列を複数列インデクスの第1構成列にすると,その複数列インデクスは分割キーインデクスになります。
-
分割キーであるSCODE列を第1構成列以外に指定すると,その複数列インデクスは非分割キーインデクスになります。
-
(2) 複数列分割の場合
次に示す条件を満たす場合,そのインデクスは分割キーインデクスになります。
- 〈条件〉
-
-
分割キーを先頭とし,分割に指定した列を先頭から同順にすべて含んで,複数の列に作成したインデクス
-
次に示すZAIKO表を例にして,インデクスが分割キーインデクスになる場合を次の図に示します。
- 〔説明〕
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
-
すべての分割キー(SCODE及びTANKA列)を指定し,かつ分割キーの指定順序が表定義時と同じため,この複数列インデクスは分割キーインデクスになります。
-
すべての分割キー(SCODE及びTANKA列)を指定し,かつ分割キーの指定順序が表定義時と同じため,この複数列インデクスは分割キーインデクスになります。
-
すべての分割キー(SCODE及びTANKA列)を指定しているが,分割キーの指定順序が表定義時と異なるため,この複数列インデクスは非分割キーインデクスになります。
-
すべての分割キー(SCODE及びTANKA列)を指定しているが,分割キーの指定順序が表定義時と異なるため,この複数列インデクスは非分割キーインデクスになります。
-