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