変更内容
Symfoware/RDBにおけるSQL文の最適化のチューニングとして、JOIN_ORDERパラメタを設定します。JOIN_ORDERには、AUTO、INSIDE(省略値)、OUTSIDEを指定することができます。
最適化処理は、最適化情報から処理手順にかかるコストを見積もり、最適なジョイン順を決めます。最適化情報が設定されていない場合は、どのジョイン順も同じコストになる可能性が高くなります。JOIN_ORDERにINSIDEを指定するか、省略し、同じコストの場合、ジョイン順は以下のようになります。
WHERE句の表を結合する探索条件の記述の逆順にジョインするアクセスプランを選択します。
WHERE句の表を結合する探索条件の記述順にジョインするアクセスプランを選択します。
非互換
JOIN_ORDERにINSIDEを指定するか、省略し、最適化情報を設定しない運用の場合、ジョイン順がWHERE句の表を結合する探索条件の記述の逆順になります。
JOIN_ORDERにINSIDEを指定するか、省略し、最適化情報を設定しない運用の場合、ジョイン順がWHERE句の表を結合する探索条件の記述順になり、バージョンアップを契機に、まれにSQL文のレスポンスが悪くなることがあります。
対処方法
以下の1)、2)のいずれかを行ってください。
すべてのアプリケーションを5.x系以前と同じ動作としたい場合
システム用の動作環境ファイルのパラメタSAME_COST_JOIN_ORDERにREVERSEを指定してください。
5.x系以前と6.x系以降のアプリケーションが混在していて、5.x系以前のアプリケーションのみ、以前と同じ動作としたい場合
5.x系以前のアプリケーションが使用するクライアント用の動作環境ファイルのパラメタSAME_COST_JOIN_ORDERにREVERSEを指定してください。
SQL文にASSIST指定のLEADING_TABLEを指定して、ジョイン順を固定してください。