FROM句に表と結合表を指定したとき、表と結合表(結合型がLEFTの場合)の左側の表を先にジョインし、その後、右側の表とジョインしたい場合があります。また、結合表(結合型がLEFTの場合)を複数指定したとき、左側の表どうしを先にジョインし、その後、右側の表とジョインしたい場合があります。このような場合、最適化パラメタ“JOIN_ORDER”で、FROM句全体のジョイン順を最適化することによって、意図したジョイン順を選択できます。
TBL2が大量件数でTBL1.C1=10の検索範囲が小さい場合、TBL1→TBL2→TBL3の順にジョインした方が性能がよくなります。このような場合は、最適化パラメタ“JOIN_ORDER”にAUTOまたはOUTSIDEを指定します。
TBL2が少量件数でTBL1.C1=10の検索範囲が大きい場合、TBL2→TBL3→TBL1の順にジョインした方が性能がよくなります。このような場合は、最適化パラメタ“JOIN_ORDER”にAUTOまたはINSIDEを指定します。
一般的に、最適化パラメタ“JOIN_ORDER”にはAUTOと指定しておくことをお奨めします。その上で、最適化情報を設定または変更しても意図したジョイン順にならない場合は、OUTSIDEまたはINSIDEを指定して、ジョイン順をチューニングしてください。
最適化パラメタ“JOIN_ORDER”を変更すると、他のアプリケーションやSQL文に悪影響がでる場合があります。このような場合、ASSIST指定の“LEADING_TABLE”を利用すると、最適化パラメタを変更することなく、ジョイン順を固定化することができます。
参照
ASSIST指定の使用方法については、“Symfoware Server アプリケーション開発ガイド(共通編)”を参照してください。