プロジェクト、動的SQL文のステッチでは、労働組合接続されたすべての結果セットを使用して、各クエリは、(数百値)で使用されています。次のようなステートメント
SELECT AA FROM T1 WHERE AA IN(1、2、3、4 ..............................) UNION ALL SELECT AA FROM T2 AA IN(1、2、3、4 ..............................)
時間と労働組合の多くのようにすべての異常が発生しました
「クエリプロセッサが内部リソースを使い果たし、私たちはクエリプランを作成することはできません。これは非常にまれにしか起こらない、とだけ非常に複雑なクエリまたは参照内のテーブルまたは多数のパーティションが表示されます。クエリを簡素化してください。あなたは、このメッセージがで表示されたと考えられる場合詳細については、カスタマ・サポート・サービスに連絡し、間違いでした。」
ソリューション:
EXISTSステートメントに文で一時テーブルを使用します
CREATE TABLEの#の温度を(IDのデータ型はnvarchar(50 )) INSERT INTO#1 TEMP(ID)を選択 1つの 組合を 選択する 2 組合を 選択し 3 組合を 選択し 4 組合を 選択する 5 SELECTの AAをFROM T1 EXISTSは、(SELECT 0 FROM#1 TEMP ID = T1.aa ) UNION ALL SELECT AA FROM T2 WHEREを EXISTS(SELECT 0 FROM#1 TEMP ID = T1.aa)DROPの表#1 TEMP。
パフォーマンスの向上:
変更は14秒の結果の後に変更する前に与えられた57秒の実行、効果は明らかです。