ユーザーガイド > パフォーマンスチューニング > 半結合最適化オプション > 半結合最適化のためのデータソースの構成
 
半結合最適化のためのデータソースの構成
データソースの[Advanced(詳細)]タブの設定は、クエリーエンジンが半結合最適化を使用するタイミングを決定するのに役立ちます。
次の例を考えてみましょう。
SELECT * FROM DS1.R INNER {OPTION SEMIJOIN} JOIN DS2.S ON R.r1 = S.s1 AND R.r2=S.s2.
 
理想的には、TDVクエリーエンジンは、DS2に対するWHERE句で次のような述語を生成します。
(s1, s2) IN ((2,3),(1,5), …) 
 
これは、IN句の行コンストラクター形式と呼ばれます。
ターゲットのデータソース(この例ではDS2)でこのタイプのSQLがサポートされていない場合、TDVクエリーエンジンには次の2つのオプションがあります。
OR構文形式を使用し、次のようなクエリー述語を生成する
(s1=2 and s2=3) or (s1=1 and s2 = 5) or …)
 
複数のスカラーIN句構文を使用して次のようなクエリー述語を生成する
s1 IN (2,1, …) and s2 IN(3, 5,…)
 
OR構文は、行コンストラクター構文と意味的に同じです。
複数のスカラーIN句構文はそれほど選択的ではないため、追加のローカル処理のためにTDV Serverに取り込まれる行が増える可能性があります。SQL文字列が長いほど、実行プランでパーティション分割された半結合の実行が必要になる可能性が高くなります。複数のステートメントを実行して、すべてのデータを取得します。
半結合最適化のためにデータソースを構成するには
1.データソースを開きます。
2.[Configuration(構成)]タブを開きます。
3.[Advanced(詳細)]タブを選択します。
4.下にスクロールして、次のパラメーターを設定します。
 
フィールド
説明
[Max Source Side Cardinality Estimate(最大ソース側カーディナリティ推定)]
自動半結合をトリガーするLHS行の数を変更します。左側のカーディナリティがこの値よりも小さく、この値と[Min Ratio of Target Cardinality to Source Cardinality(ターゲットカーディナリティとソースカーディナリティの最小比率)] (この表の次の行)の積がRHSの推定カーディナリティよりも小さい場合、TDVクエリーエンジンは、半結合最適化を使用するようにクエリー実行プランを書き換えようとします。
[Min Ratio of Target Cardinality to Source Cardinality(ターゲットカーディナリティとソースカーディナリティの最小比率)]
半結合最適化の使用をトリガーするRHSとLHSの最小比率を設定します。
5.設定を保存します。