MSSQLデータベース「クエリプロセッサが内部リソースを使い果たし、私たちは、クエリプランを作成することはできません。」問題に対処

プロジェクト、動的SQL文のステッチでは、労働組合接続されたすべての結果セットを使用して、各クエリは、(数百値)で使用されています。次のようなステートメント

SELECT AA FROM T1 WHERE AA IN1234 ..............................)
 UNION  ALL 
SELECT AA FROM T2 AA IN1234 ..............................)

時間と労働組合の多くのようにすべての異常が発生しました

「クエリプロセッサが内部リソースを使い果たし、私たちはクエリプランを作成することはできません。これは非常にまれにしか起こらない、とだけ非常に複雑なクエリまたは参照内のテーブルまたは多数のパーティションが表示されます。クエリを簡素化してください。あなたは、このメッセージがで表示されたと考えられる場合詳細については、カスタマ・サポート・サービスに連絡し、間違いでした。」

ソリューション:

EXISTSステートメントに文で一時テーブルを使用します

CREATE  TABLEの#の温度を(IDのデータ型はnvarchar50 ))
 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を EXISTSSELECT  0  FROM#1 TEMP  ID = T1.aa)DROPの#1 TEMP

 

パフォーマンスの向上:

変更は14秒の結果の後に変更する前に与えられた57秒の実行、効果は明ら​​かです。

おすすめ

転載: www.cnblogs.com/liuxiaoji/p/11579016.html