7.3.2 インデクスの再編成
インデクスだけを再編成できます。インデクスの再編成を次の図に示します。
- 〔説明〕
-
インデクスのキー情報を検索してインデクス情報ファイルを作成し,その情報を基にインデクスを再配置します。これをインデクスの再編成といいます。インデクスの再編成は,インデクス単位又はインデクス格納RDエリア単位に実行できます。
- 〈この項の構成〉
(1) 適用範囲と適用基準
再編成の対象になるのは,通常のインデクスだけです。プラグインインデクスの再編成はできません。インデクスの再編成は,大量のデータの追加,削除,更新によって生じるインデクス格納ページの無効領域を解放する場合に実行します。
(2) 表の再編成との使い分け
-
データの更新(UPDATE)が多い場合は,インデクスだけを再編成することをお勧めします。
-
データの削除(DELETE)及び追加(INSERT)が多い場合は,表を再編成することをお勧めします。
-
表を再編成する時間の余裕がない場合,インデクスだけを再編成すればインデクス検索時間を短縮できます。
(3) インデクスの再作成との違い
インデクスを再作成すると表データを検索しますが,インデクスを再編成しても表データを検索しません。そのため,インデクスの再編成は再作成に比べて処理時間が短くなり ※,ソート処理も不要なため性能の面で優れています。
- 注※
-
次に示す条件を満たす場合に,処理時間が短くなります。
表格納RDエリアの使用中ページ数 > インデクス格納RDエリアの使用中ページ数
(4) インデクスの再編成時の注意
同じRDエリア内にある複数のインデクスを同時に再編成する場合は,インデクスを再編成する前にpdholdコマンドでRDエリアを閉塞状態にしてください。そして,インデクスの再編成の終了後にpdrelsコマンドでRDエリアの閉塞状態を解除してください。
(5) 再編成の実行時間を短縮する方法
インデクスの再編成をするときに,データベースの更新ログを取得しなければ(ログレスモード又は更新前ログ取得モード),その分の処理時間が短縮されます。データベースの更新ログ取得方式は,データベース再編成ユティリティ(pdrorg)の -lオプションで指定します。
(6) 空きがない状態のRDエリア内のインデクスを再編成する場合
インデクスの再編成をするときは,ページ内の未使用領域の比率はCREATE TABLE又はCREATE INDEXのPCTFREEオペランドの指定が適用されます。したがって,容量の空きがない状態のRDエリア内のインデクスを再編成すると,インデクスの再編成時にRDエリアの容量が不足することがあります。これを防ぐには,データベース再編成ユティリティ(pdrorg)のoption文でidxfreeオペランドを指定して,CREATE TABLE又はCREATE INDEXのPCTFREEオペランドで指定したページ内の未使用領域の比率を変更してください。
ただし,これは再編成時の暫定的な処置なので,通常の運用ではデータベース構成変更ユティリティ(pdmod)でRDエリアを拡張するようにしてください。