12.9.1 クラスタキーの効果と指定方法
クラスタキーとは,特定の列の値の昇順又は降順に行を格納するためのキーとして指定した列のことです。表の一つの列又は複数の列にクラスタキーを指定しておくと,クラスタキーの昇順又は降順に行を格納できます。
クラスタキーを定義すると,指定した列に対してインデクスが作成されます。
(1) クラスタキーを定義したときの効果
表にクラスタキーを指定したときの効果を次に示します。
- 性能の向上
-
範囲を指定して行の検索,更新,削除などをするとき又はクラスタキー順に検索,更新などをするときに,入出力時間を削減できます。
- 操作性の向上
-
-
UNIQUE指定のクラスタキーを定義すると,そのクラスタキーには一意性制約が適用されます。このため,行を挿入するときに,クラスタキーを構成している列の値がすべての行で重複しないようにできます。なお,フレキシブルハッシュ分割表には,UNIQUE指定のクラスタキーを定義できません。
-
PRIMARY指定のクラスタキーを定義すると,そのクラスタキーには一意性制約及び非ナル値制約が適用されます。このため,行を挿入するときに,クラスタキーを構成している列の値がすべての行で重複しないようにできます。また,クラスタキーを構成している列の値にナル値を格納しないようにできます。なお,フレキシブルハッシュ分割表には,PRIMARY指定のクラスタキーを定義できません。
-
表を作成するときに,入力データがクラスタキーの昇順又は降順に並んでいるかどうかをデータベース作成ユティリティ(pdload)で確認できます。
-
表を再編成するときに,アンロードした行のクラスタキーと,リロードするクラスタキーが一致しているかどうかをデータベース再編成ユティリティ(pdrorg)で確認できます。
-
(2) 適用基準
クラスタキーを指定するとよい場合を次に示します。
-
キーの昇順又は降順にデータを蓄積する業務で,キー順にアクセスする業務が多い場合
-
キーを変更しない表の場合
-
行長が固定の表の場合
(4) 設計上の考慮点
データを追加した後の検索効果を上げるため,表を格納しているページ内に未使用領域を設定しておきます。設定方法については,「ページ」を参照してください。
(5) 注意
-
クラスタキーを構成する列の値は更新できません。
-
クラスタキーを構成する列にナル値は挿入できません。
-
クラスタキーを指定した表にデータを追加するとき,追加しようとするキー値に近接するキー値を持ったページを探すためのオーバヘッドが発生します。この概要を次の図に示します。
図12‒20 クラスタキーを指定した表にデータを追加するときのオーバヘッドの概要
- 〔説明〕
-
-
列Cを持つデータを追加します。
-
列Cに近接するキー値を探すオーバヘッドが発生します。
-