我的问题是我需要从表中删除大约60M记录,而不会导致使用此表的其他进程造成死锁。在这一点上,我几乎完成了使用while循环来移除记录,该循环每次只能处理大约1M个记录,但它需要整天进行。SQL Server 2005高效删除
Q1:从表中删除大量数据,使表保持在线状态并最小限度地影响其他需要在MS SQL Server 2005中使用此表的资源的最佳方式是什么?
问题2:有没有像Oracle中那样在SQL Server中实现单个行锁定(而不是表锁定)的方法? (注意回答此问题可能会回答Q1)。
A2:就像@Remus Rusanu通知我,有一种方法可以用row level locking进行删除。
我喜欢它。下一次,我必须做这样的事情不得不给这个镜头。 – 2010-01-04 21:07:42
我们最初计划将记录保留到新表中。然而测试表明,从头开始重建索引的时间太长了。 – 2010-01-04 21:10:22
我经常这样做,它的作用就像一个魅力。比删除大量的行要好得多。 – 2010-01-04 21:10:29