14.1.2 定義したレンジインデクスの見直し
レンジインデクスを使用した検索処理の状況を確認することで,定義したレンジインデクスを見直す方法について説明します。
通常は,SQL文の統計情報を確認してください。レンジインデクスを使用した検索処理の状況を確認して,必要があれば,定義したレンジインデクスを見直します。
ただし,レンジインデクスが定義された複数の表に対する検索処理の状況を確認する場合は,アクセスパスの統計情報を確認してください。SQL文の統計情報では,どのレンジインデクスを見直せばよいかわかりません。
定義したレンジインデクスを見直す方法を次に示します。
-
SQL文の統計情報を確認する場合
「(1) SQL文の統計情報を確認してレンジインデクスを見直す」を参照してください。
-
アクセスパスの統計情報を確認する場合
「(2) アクセスパスの統計情報を確認してレンジインデクスを見直す」を参照してください。
(1) SQL文の統計情報を確認してレンジインデクスを見直す
SQL文の統計情報を確認して,レンジインデクスを使用した検索処理の状況を確認します。
SQL文の統計情報は,次に示すどちらかの方法で確認してください。
-
adbstatコマンドを実行する
マニュアルHADB コマンドリファレンスのadbstat(HADBサーバの統計解析)を参照してください。
-
SQLトレースファイルを確認する
「10.11.2 SQLトレース情報に出力される情報」の「(10) SQL文の統計情報」を参照してください。
SQL文の統計情報を確認して,レンジインデクスを使用した検索処理の状況を確認する手順を,次に示します。
手順
-
「チャンクのスキップ」によるレンジインデクスの使用状況を確認する
レンジインデクスを使用した検索処理で,チャンクのスキップがどれだけ実行されているかについて確認します。
SQL文の統計情報に出力された,次に示す項目を確認してください。
-
Ridx_chunk_skip_cnt(レンジインデクスを使用した検索で,表のチャンクをスキップした回数)
-
Ridx_chunk_judge_cnt(レンジインデクスを使用した検索で,表のチャンクが探索条件を満たす値域のデータを格納しているかどうかを判定した回数)
確認した項目を基に,次に示す計算式を求めてください。
計算式
-
-
「セグメントのスキップ」によるレンジインデクスの使用状況を確認する
レンジインデクスを使用した検索処理で,セグメントのスキップがどれだけ実行されているかについて確認します。
SQL文の統計情報に出力された,次に示す項目を確認してください。
-
Ridx_sgmt_skip_cnt(レンジインデクスを使用した検索で,表のセグメントをスキップした回数)
-
Ridx_sgmt_judge_cnt(レンジインデクスを使用した検索で,表のセグメントが探索条件を満たす値域のデータを格納しているかどうかを判定した回数)
確認した項目を基に,次に示す計算式を求めてください。
計算式
-
-
定義したレンジインデクスを見直す
手順1.および手順2.で計算した結果が両方とも0の場合,または両方とも0に近い場合は,レンジインデクスの効果がありません(チャンクのスキップ,およびセグメントのスキップが実行されていません)。そのため,定義したレンジインデクスを削除することを検討してください。
効果がないレンジインデクスを使用すると,レンジインデクスを使用しない検索処理よりも,検索処理に時間が掛かるおそれがあります。
なお,手順1.および手順2.で計算した結果が両方とも1に近い場合,または片方だけ1に近い場合は,レンジインデクスの効果があります(チャンクのスキップ,またはセグメントのスキップが実行されています)。そのため,定義したレンジインデクスの見直しは不要です。
- 重要
-
シングルチャンク表の場合でも,手順1.を実施してください。レンジインデクスは,シングルチャンク表を1つのチャンクとして,チャンクのスキップを実行します。そのため,レンジインデクスの効果の有無を確認する必要があります。
(2) アクセスパスの統計情報を確認してレンジインデクスを見直す
アクセスパスの統計情報を確認して,レンジインデクスを使用した検索処理の状況を確認します。
アクセスパスの統計情報は,SQLトレースファイルを確認してください。アクセスパスの統計情報については,「10.11.3 アクセスパスの統計情報の出力例と出力項目」を参照してください。
アクセスパスの統計情報を確認して,レンジインデクスを使用した検索処理の状況を確認する手順を,次に示します。
手順
-
「チャンクのスキップ」によるレンジインデクスの使用状況を確認する
レンジインデクスを使用した検索処理で,チャンクのスキップがどれだけ実行されているかについて確認します。
アクセスパスの統計情報に出力された,次に示す項目を確認してください。
-
Data_ridx_chunk_skip_cnt(レンジインデクスを使用した検索で,表のチャンクをスキップした回数)
-
Data_ridx_chunk_judge_cnt(レンジインデクスを使用した検索で,表のチャンクを判定した回数)
確認した項目を基に,次に示す計算式を求めてください。
計算式
-
-
「セグメントのスキップ」によるレンジインデクスの使用状況を確認する
レンジインデクスを使用した検索処理で,セグメントのスキップがどれだけ実行されているかについて確認します。
アクセスパスの統計情報に出力された,次に示す項目を確認してください。
-
Data_ridx_sgmt_skip_cnt(レンジインデクスを使用した検索で,表のセグメントをスキップした回数)
-
Data_ridx_sgmt_judge_cnt(レンジインデクスを使用した検索で,表のセグメントを判定した回数)
確認した項目を基に,次に示す計算式を求めてください。
計算式
-
-
定義したレンジインデクスを見直す
手順1.および手順2.で計算した結果が両方とも0の場合,または両方とも0に近い場合は,レンジインデクスの効果がありません(チャンクのスキップ,およびセグメントのスキップが実行されていません)。そのため,定義したレンジインデクスを削除することを検討してください。
効果がないレンジインデクスを使用すると,レンジインデクスを使用しない検索処理よりも,検索処理に時間が掛かるおそれがあります。
なお,手順1.および手順2.で計算した結果が両方とも1に近い場合,または片方だけ1に近い場合は,レンジインデクスの効果があります(チャンクのスキップ,またはセグメントのスキップが実行されています)。そのため,定義したレンジインデクスの見直しは不要です。
- 重要
-
シングルチャンク表の場合でも,手順1.を実施してください。レンジインデクスは,シングルチャンク表を1つのチャンクとして,チャンクのスキップを実行します。そのため,レンジインデクスの効果の有無を確認する必要があります。