3

SQL 2005 サーバーに巨大なクエリがあります。これは毎日 1 回実行する必要がありますが、このクエリを実行すると一時データベースが 2GB から 48GB に増加します。このクエリが単一のテーブルで (~120 列) の 80K レコードを追加/更新するときに tempdb が成長している理由を最適化または見つける最善の方法は何ですか?

tempdb がそれほど大きくならないこのクエリに対して、どうすればよいでしょうか?

任意の提案をいただければ幸いです。

注: このクエリには、temptables、テーブル変数、または CTE はありません。ただの束

INSERT INTO ... with MULTITABLE JOINS with SUBQueries...
4

2 に答える 2

2

あなたはこれを見たいと思うかもしれません。クエリが一時テーブルを使用して実行されている可能性がありますが、それについて何も知らずに判断するのは非常に困難です。

質問の更新を見ると、サブクエリが TempDB をフラッディングする temptable 戦略を使用している可能性が高いようです。これらのサブクエリを取り除くか、1 回のクエリ実行で処理するデータの量を減らすようにしてください。TempDB の成長を抑えるのに役立ちます。

于 2009-12-03T19:25:55.557 に答える
1

正確なコードを見ずに、あなたを助けるのは難しいです。しかし、クエリは最適化する必要があるようです。

もちろん、一時データベースのサイズを48 GBに維持することもできますが、少なくともこの方法では、この処理が実行されたときに成長するのに時間をかける必要はありません。

于 2009-12-03T19:34:59.850 に答える