11.3.5 レンジインデクスの再作成
レンジインデクスを定義した表に対して,行の挿入,行の更新,および行の削除を頻繁に実施した場合は,レンジインデクスを再作成することを検討してください。
レンジインデクスを再作成すると,次に示す効果があります。
-
レンジインデクスを使用した検索性能の低下を防ぐことができる
-
データ用DBエリアの使用量を削減できる(行の更新や行の削除で発生した無効な状態のレンジインデクスのデータを削除できる)
レンジインデクスを再作成する場合は,adbidxrebuildコマンドを実行してください。adbidxrebuildコマンドについては,マニュアルHADB コマンドリファレンスのadbidxrebuild(インデクスの再作成)を参照してください。
- メモ
-
未完状態になったレンジインデクスを再作成したい場合は,「16.11.1 レンジインデクスが未完状態になったときの対処方法」を参照してください。
レンジインデクスを再作成するかどうかを判断する方法について,次に示します。
(1) レンジインデクスを使用した検索性能の低下を防ぐ場合
レンジインデクスを定義した表に対して,行の挿入,行の更新,または行の削除を頻繁に実施した場合は,レンジインデクスを使用した検索性能が低下します。
レンジインデクスを使用した検索処理の状況を確認する場合は,「14.1.2 定義したレンジインデクスの見直し」を参照してください。SQL文の統計情報またはアクセスパスの統計情報のどちらかを確認して,レンジインデクスの使用状況を確認してください。確認した結果,レンジインデクスの効果がない場合(計算結果が0である,または0に近い)は,レンジインデクスを再作成してください。
(2) データ用DBエリアの使用量を削減する場合
レンジインデクスを定義した表に対して,行の更新,または行の削除を頻繁に実施した場合は,次に示す手順に従って,レンジインデクスを再作成するかどうかを判断してください。
手順
-
adbdbstatusコマンドでレンジインデクスの使用量を確認する
adbdbstatusコマンドで,インデクスのサマリ情報を出力してください。そして,Used_segments(インデクスの使用中セグメント数)の出力内容を確認してください。adbdbstatusコマンドについては,マニュアルHADB コマンドリファレンスのadbdbstatus(データベースの状態解析)を参照してください。
-
実表内の有効なデータを基に見積もったレンジインデクスの容量を確認する
レンジインデクスの容量を求める場合は,「5.8.1 データ用DBエリアの総ページ数の求め方」の「(2) 変数の説明」にある次の個所を参照してください。なお,表の種類によって参照先が異なります。
-
シングルチャンク表の場合
-
マルチチャンク表の場合
なお,変数SGRIXは,データ用DBエリアに格納されているすべてのレンジインデクスの合計を求める計算式となっています。ここでは,対象のレンジインデクスだけを求めてください。
-
手順1.および手順2.で確認した結果を比較して,その差が大きい場合は,レンジインデクスを再作成してください。