2010-04-28 85 views
3

我在迭代中處理大量數據,每個迭代處理大約10-50 000條記錄。由於這樣大量的記錄,我將它們插入到全局臨時表中,然後對其進行處理。通常,每次迭代需要5-10秒。Oracle - 截斷全局臨時表

難道是明智的每次迭代後截斷全局臨時表,以便每次迭代可以用一個空表開始?有大約5000次迭代。

回答

5

不!全球臨時表的全部概念是,當您不再需要數據時,數據會自動消失。

例如,如果你想要的數據消失,當你提交,你應該使用ON COMMIT DELETE ROWS選項時,最初創建表。

這樣,你不需要做TRUNCATE - 你只COMMIT,並且該表是所有新鮮而空,並準備重新使用。

0

每次運行50000條記錄5000次迭代?如果你需要做這麼多的處理,你當然可以優化你的處理邏輯以更高效地運行。與截斷表格相比,這會帶給你更多的速度。

但是,如果你是在一個臨時表中的數據後,應該截斷,或者只是保證下道工序使用的表不是再次重新處理相同的數據。

E.g.有一個「已處理」標誌,所以新進程不使用現有數據。 或 不再需要時刪除數據。