結合を処理するために、SQL オプティマイザによって特殊データベースパラメータJOIN_SEARCH_LEVEL が使用されます。
結合順序検索のアルゴリズムを定義し、結合順序検索のコストと時間を決定します。使用するアルゴリズムを直接指定することも、パラメータJOIN_MAXTAB_LEVEL4、JOIN_MAXTAB_LEVEL9 と結合のテーブル数にもとづいて計算することもできます。
アルゴリズムを直接指定するには、JOIN_SEARCH_LEVEL に対して以下の値の 1 つを入力します。
● 9: 使用可能なすべての結合順序が計算されます (順列アルゴリズム)。
● 4: クエリ構造に応じてさまざまな結合順序が計算されます (変換アルゴリズム)。
● 1: 結合順序検索用として最も簡単なアルゴリズムが使用されます (貪欲アルゴリズム)。
JOIN_SEARCH_LEVEL として 0 を入力すると、結合順序検索のアルゴリズムは以下のように指定されます。
結合のテーブル数 n |
結合順序検索のアルゴリズム |
n ≤ JOIN_MAXTAB_LEVEL9 |
9 |
JOIN_MAXTAB_LEVEL9 <n ≤ JOIN_MAXTAB_LEVEL4 |
4 |
JOIN_MAXTAB_LEVEL4 < n |
1 |
JOIN_SEARCH_LEVEL は 0 に設定します。
JOIN_MAXTAB_LEVEL4 は 16 に設定します。
JOIN_MAXTAB_LEVEL9 は 4 に設定します。
結合用として 5 つのテーブルを使用します。
JOIN_MAXTAB_LEVEL9 < 5 ≤ JOIN_MAXTAB_LEVEL4 が適用されるため、この結合には結合順序検索レベル 4 (変換アルゴリズム) を使用します。