2010-12-17 54 views
0

我有一個存儲過程,刪除幾百萬條記錄,然後重新插入已更改的記錄。如何劃分我的交易

現在,我已經組織了我的交易這樣的:

begin tran - delete records - commit tran 
begin tran - insert records - commit tran 

我在想,雖然判斷下列可能不是更快:

begin tran - delete records - insert records - commit tran 

因爲那可能會認識到,新的記錄可以採取舊的地方,從而更快?

+0

爲什麼不只是更新現有的被替換的,還是我誤讀你? – tvanfosson 2010-12-17 13:19:35

+0

他們是不一樣的,他們在數量和內容上有所不同 – thomaspaulb 2010-12-17 13:22:55

回答

0

事務邊界應該基於你正在做什麼的邏輯。在第一種情況下,您可能會使數據庫處於舊記錄被刪除但未插入新記錄的狀態。這可以接受嗎?你能恢復嗎?如果不是,那麼你應該使用第二種情況。

+0

謝謝..你是對的,交易是爲了緩解回滾/恢復,而不是速度。 – thomaspaulb 2010-12-17 15:52:58