ページの先頭行へ戻る
Symfoware Server V12.6.0 アップデート情報
FUJITSU Software

2.21 OR結合した条件から作成するアクセスプランの改善

変更内容

SQL文のWHERE句にブール演算子“OR”を指定した場合、TIDユニオンマージのアクセスプランに加えて、インデックス検索、またはインデックス検索と表データ取得のアクセスプランから処理手順にかかるコストを評価して、効率の良い処理手順を決めるようになります。

非互換

V10.1.x以前

SQL文のWHERE句にブール演算子“OR”を指定した場合、TIDユニオンマージのアクセスプランを作成します。

V11.0.0以降

SQL文のWHERE句にブール演算子“OR”を指定した場合、TIDユニオンマージのアクセスプランに加えて、インデックス検索、またはインデックス検索と表データ取得のアクセスプランから処理手順にかかるコストを評価して、効率の良い処理手順を決めます。

ほとんどの場合、インデックス検索の方がSQL文のレスポンスが良いのですが、データの分布によっては、表に対するI/O効率の高いTIDユニオンマージの方が良い場合もあります。どちらのアクセスプランを選択するかは、Symfoware/RDBが自動的に決めますが、最適化情報を設定しない運用の場合はこの選択を誤ってしまい、V11.0.0以降、まれにSQL文のレスポンスが悪くなることがあります。

対処方法

V10.1.x以前と同じアクセスプランにしたい場合は、動作環境ファイルのパラメタCHOOSE_TID_UNIONにYESを指定してください。