INとNOT IN述部を含むクエリーには、多くの定数値を含めることができます(どちらの場合にも、値のリストはIN-listと呼ばれます)。ビッグ データ アプリケーションは、分析クエリーの一部として、非常に大きなリスト(100,000個またはそれ以上の項目)を生成できます。この機能により、最適化ルーチンはクエリー処理のクエリー リライト フェーズで、大規模なINリストをスプールに変換でき、それをクエリーの他のリレーションとの結合計画に参加させることができます。
利点
- 最適化ルーチンによるこの長いリストの述部に関連する処理を排除することにより、一般に解析時間が短縮され、これらのリストを使用するクエリーのパフォーマンスが向上します。
- 大規模なINリストを処理するシステムの能力が向上しました。
- 新しいDBS制御パフォーマンスのフィールド(InListRewriteThreshold、MaxNumInListRewrite、およびInListRewriteOption)により、INリスト リライトを実行する方法と時期を調整できます。
考慮事項
- まれに、INリスト リライトが適切ではない場合があります。例えば、
- 連続する値を含むINリストは、述部の簡略化を使用して単一の範囲に簡略化できることがあります(x in ( 1,2,3,…., 400000) => x between 1 and 400000)。
- INリストが次のように別の述部とAND結合されている場合、大きなクエリーが実現不可能になることがあります。
x>10000 and x in (1, 3, 5,…, 9001)
追加情報
- INリスト処理の詳細については、<Teradata Vantage™ SQLリクエストおよびトランザクション処理、B035-1142>を参照してください。
- DBS制御フィールドの詳細については、<Teradata Vantage™ - データベース ユーティリティ、B035-1102>を参照してください。