2010-12-17 55 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