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

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

変更内容

V11.0.0で行値構成子をサポートしました。その際、複数の列から構成されるインデックスを使って高速に検索するようにインデックス検索のアクセスプランを改善しました。
そのため、従来からの探索条件も、行値構成子と等価な場合には、同様にアクセスプランが改善します。

以下の例1、例2について説明します。

例1

行値構成子を指定した探索条件と等価な探索条件の例です。

V10.1.x以前は複数の検索範囲(「C1=1 AND C2>=1)」の検索範囲、「C1>1」の検索範囲)に対して、別々にインデックスを検索していましたが、V11.0.0以降は1回で検索できるようにアクセスプランを改善しました。

例2

行値構成子を指定した探索条件と等価な探索条件の例です。

V10.1.x以前は以下のいずれかの検索を行っていましたが、V11.0.0以降は複数の検索範囲を1回で検索できるようにアクセスプランを改善しました。

非互換

V10.1.x以前

SQL文のWHERE句の指定が、複数の列から構成されるインデックスを使用した検索で、行値構成子と等価な探索条件を指定した場合、TIDユニオンマージ、インデックス検索、またはインデックス検索と表データ取得のアクセスプランから処理手順にかかるコストを評価して、効率の良い処理手順を決めます。

V11.0.0以降

SQL文のWHERE句の指定が、複数の列から構成されるインデックスを使用した検索で、行値構成子と等価な探索条件を指定した場合、V11.0.0で改善したインデックス検索、またはインデックス検索と表データ取得のアクセスプランを選択します。
ほとんどの場合、V11.0.0で改善したインデックス検索の方がSQL文のレスポンスが良いのですが、データの分布によっては表に対するI/O効率の高いTIDユニオンマージの方が良い場合もあります。そのため、V11.0.0以降、まれにSQL文のレスポンスが悪くなることがあります。

対処方法

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