4.4.2 実表検索処理情報(SCAN)のRow CountとSearch
- 〈この項の構成〉
(1) インデクスで絞り込めているか確認する
インデクスを使用した検索では,インデクスのサーチ条件で取り出す行を絞り込みます(Search)。そして,絞り込んだ行に対して,インデクスで判定できない探索条件を評価して,行を取り出します(Row Count)。Searchの値とRow Countの値の行数に開きがあると,実行時間が掛かってしまうことがあります。インデクスで絞り込んだ行数と取り出した行数について,次に示します。
(2) 確認方法
中間結果情報の中で「SCAN」と表示されている個所が,実表検索処理情報です。この下のRow CountとSearchの値に開きがないか確認してください。アクセスパスと実表検索処理情報の出力例を次に示します。
(3) 対策方法
サーチ条件で絞り込めていない理由としては,次のことが考えられます。
-
インデクスを定義した列の値の種類が少ない
-
インデクスを定義した列の値の分布に偏りがある
次のどちらかの対策方法を検討してください。
対策方法 |
説明 |
---|---|
インデクス構成列の追加 |
アクセスパスで「RowCnd」または「IfThenCnd」に表示されている列をインデクスに追加してください。この時,インデクスの構成列の順序は,最も絞り込める列を第1構成列にしてください。 |
使用するインデクスの変更 |
アクセスパスで「RowCnd」または「IfThenCnd」に表示されている列に別のインデクスが定義されている場合は,使用するインデクスを変更してください。使用するインデクスはSQL文の使用インデクスのSQL最適化指定(WITH INDEX)で指定します。指定方法は,マニュアル「HiRDB Version 9 SQLリファレンス」の「使用インデクスのSQL最適化指定」を参照してください。 |
インデクス構成列を追加して対策した結果の例を次に示します。