2009-12-03 82 views
3

我對SQL 2005 Server有巨大的查詢。這必須每天運行一次,但是當這個查詢運行時,temp db會從2GB增長到48GB。當這個查詢在單個表上的80K記錄上添加/更新(〜120列)時,什麼是最佳方法來優化或找到tempdb增長的原因?大型查詢增加TempDB

我該怎麼做這個查詢tempdb不會增長太多?

任何建議,將不勝感激。

注意: 此查詢沒有任何臨時表或表變量或CTE。 只是

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

回答

1

沒有看到確切的代碼,它很難幫助你。但查詢似乎需要優化。

當然,你可以調整你的臨時數據庫大小,使其保持在48 GB,至少這樣它贏了;當這個東西運行時不得不花時間增長。

+0

此查詢由其他人撰寫。原來我不應該那麼懶。我看着查詢,它確實需要進行優化。我創建了39箇中只有3個查詢。 – THEn 2009-12-04 18:08:39

1

一堆你可能想看看this。很可能您的查詢正在使用臨時表來運行,但在不知情的情況下很難分辨出來。

看着你的問題更新,看起來你的子查詢很可能使用了臨時策略,這會使你的TempDB氾濫。嘗試擺脫這些子查詢和/或減少在單個查詢運行中使用的數據量應該有助於減少TempDB的增長。