14.7 ハッシュジョインが適用されるINNER JOINの結合順序の見直しによるSQL文の実行時間の短縮に関するチューニング
ここでは,ハッシュジョインが適用されるINNER JOINの結合順序の見直しによる,SQL文の実行時間を短縮する方法について説明します。
ハッシュジョインが適用されるINNER JOINを含むSQL文を実行する場合,INNER JOINの外表と内表を入れ替えた結合方式指定を行うと,SQL文の実行時間を短縮できることがあります。
手順
-
ハッシュジョインが適用されるINNER JOINの有無を確認する
SQLトレース情報に出力された「実行したSQL文とアクセスパス情報」を確認してください。アクセスパス情報に,ハッシュジョインが適用されたINNER JOINがあるかどうかを確認してください。
ハッシュジョインが適用されたINNER JOINがある場合は,手順2.に進んでください。
-
ハッシュジョインでハッシュテーブル領域の領域不足の発生有無を確認する
ハッシュジョインが適用されたINNER JOINがある場合,そのハッシュジョインについて,SQLトレース情報に出力された「アクセスパスの統計情報」を確認してください。アクセスパスの統計情報に出力された「ハッシュテーブル領域に関する情報」のうち,次に示す出力項目がYとなっているかどうかを確認してください。
-
Hashtbl_area_shortage(ハッシュテーブル領域の領域不足の発生有無)
Yとなっている場合は,手順3.に進んでください。
-
-
ハッシュジョインの外表と内表の処理行数を確認する
ハッシュテーブル領域の領域不足が発生している場合,SQLトレース情報に出力された「アクセスパスの統計情報」を確認してください。アクセスパスの統計情報に出力された「検索処理に関する情報」のうち,次に示す出力項目を確認してください。
-
Scan_row_cnt(検索処理した行数)
ハッシュジョインの外表の処理行数が,内表の処理行数と比べて,十分に多いかどうかを確認してください。ハッシュジョインの外表の処理行数が,内表の処理行数よりも十分に多い場合は,手順4.に進んでください。
-
-
ハッシュジョインの結合順序を見直す
ハッシュジョインが適用されるINNER JOINに,処理行数の少なかった内表を外表としたハッシュジョインとなるように,結合方式指定を指定してください。
ハッシュジョインの外表の処理行数が,内表の処理行数よりも十分に多い場合は,ハッシュテーブル領域で処理できなかった外表のデータをいったん作業表に格納しています。そのため,SQL文の実行時間が長くなっているおそれがあります。
結合方式指定を指定することで,ハッシュジョインが適用されるINNER JOINを含むSQL文の実行時間を短縮できることがあります。
- メモ
-
-
アクセスパス情報については,「10.11.2 SQLトレース情報に出力される情報」の「(5) 実行したSQL文とアクセスパス情報」を参照してください。
-
アクセスパスの統計情報に出力された「ハッシュテーブル領域に関する情報」については,「10.11.3 アクセスパスの統計情報の出力例と出力項目」の「(2) アクセスパスの統計情報に出力される項目」の「(e) ハッシュテーブル領域に関する情報」を参照してください。
-
アクセスパスの統計情報に出力された「検索処理に関する情報」については,「10.11.3 アクセスパスの統計情報の出力例と出力項目」の「(2) アクセスパスの統計情報に出力される項目」の「(b) 検索処理に関する情報」を参照してください。
-
結合方式指定については,マニュアルHADB SQLリファレンスの構成要素の結合方式指定を参照してください。
-