ユーザーガイド > パフォーマンスチューニング > 半結合最適化オプション > 半結合オプションの使用
 
半結合オプションの使用
SQLで半結合を定義するには
1.半結合の一部であるテーブルのカーディナリティ統計情報を収集します。
この統計情報は実行プランに使用されます。
2.LEFT_CARDINALITYクエリーヒントとその値を含めます。
クエリーオプティマイザーは、このヒントを使用して、より適切なクエリープランを選択します。例:
SELECT column1 FROM table1 INNER {OPTION LEFT_CARDINALITY=10}
JOIN table2 ON table1.id = table2.id
 
クエリーオプティマイザーは、LHSカーディナリティがRHSと比較して十分に小さいことがわかっている場合には、半結合を試みます。
LHSカーディナリティが[Max Source Side Cardinality Estimate(ソース側カーディナリティの推定最大値)]の値よりも小さく、LHSカーディナリティと[Min Ratio of Target Cardinality to Source Cardinality(ターゲットカーディナリティとソースカーディナリティの最小比率)]の積がRHSの推定カーディナリティよりも小さい場合、TDVクエリーエンジンは、半結合最適化を使用するようにクエリー実行プランを書き換えようとします。
3.RIGHT_CARDINALITYクエリーヒントとその値を定義します。
オプティマイザーは、このヒントを使用して、より適切なクエリープランを選択します。具体的には、このヒントは、LHSカーディナリティと[Min Ratio of Target Cardinality to Source Cardinality(ターゲットカーディナリティとソースカーディナリティの最小比率)]で設定された最小比率を照合するときに使用されます。
SELECT column1 FROM table1 INNER {OPTION RIGHT_CARDINALITY=10000}
JOIN table2 ON table1.id = table2.id
 
テーブルのRHSカーディナリティが不明または指定されていない場合、TDVクエリーアナライザーはテーブルが大きいと想定し、LHSの指定されたカーディナリティに従って半結合を使用するかどうかを決定します。
4.データソースで統計情報が収集されていない場合は、オプションでStudioを使用して、最小、最大、および推定カーディナリティを指定します。