SQL Server删除大量行

时间:2018-11-05 08:28:33

标签: sql sql-server database

我发现了类似的帖子,但是仍然没有解决我的问题,因此我会尝试自己的运气来创建此帖子。 我有一个大表(大约5亿个条目),我需要通过一个简单的where子句删除其中一半:“ where Resolution = 100”。 我需要保留另一半,因此,我无法截断该表。 同样,如果我将另一半复制到另一个表中,将花费太多时间,这是生产数据库...

我还尝试了以10k的批量删除它们,但是没有成功。

任何其他想法都值得赞赏。

编辑:忘记了,恢复模式设置为简单,但是仍然...

1 个答案:

答案 0 :(得分:0)

如果日志无法扩展,则简单的恢复模式将无济于事-在事务之后删除日志,但是该事务仍然删除了2.5亿行。小,顺便说一句。

您可以做的是:

  • 以脚本形式运行
  • 在循环中删除较少数量的行。

删除前10000000条有效-您可以根据条件进行操作,直到@@ rowcount = 0,这表明未找到任何行。

这将使事务保持较小状态,避免了可能破坏您的事务日志的超大型事务-这是我可以看到的问题,因为您明智地决定只声明“不起作用”并且不给出错误信息给你。