【问题标题】:What is the best way to delete billion of records in SQL Server 2012?在 SQL Server 2012 中删除数十亿条记录的最佳方法是什么?
【发布时间】:2013-09-11 06:48:55
【问题描述】:

我在一个表中有 10 亿条记录。我正在尝试使用两个字段值删除这些记录。但这需要太多时间。那么你能告诉我任何解决方案吗?

【问题讨论】:

  • 此表中是否有您想要保留的行?
  • 如果您不关心这些行,请使用 TRUNCATE。不会存储撤消日志。或复制临时表中所需的行,删除此表并重命名临时表。
  • 这是一个真实的问题吗?还有,为什么要标记mysql、oracle?
  • 不,我不想清空我的桌子。我只想删除具有某些字段值的数十亿条记录,但这需要太多时间

标签: sql sql-server sql-server-2012


【解决方案1】:

如果您想删除所有十亿条记录,只需将其截断即可。如果您希望某些记录存在,您可以使用查询DELETE FROM ...

【讨论】:

  • 是的,我正在尝试删除一些具有某些字段值的记录。所以它花费了太多时间。
【解决方案2】:

如果这是全部,您可以使用 TRUNCATE 否则复制您要保留在临时表中的内容,从临时表中截断并重新插入

【讨论】:

    【解决方案3】:
    SET ROWCOUNT 500
    

    一次删除 500 个

    select 1    -- Just to force @@rowcount > 0
    while @@ROWCOUNT > 0
    delete from [table]
    [where ...]
    

    link to the same question

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-12-19
      • 1970-01-01
      • 2011-06-23
      • 1970-01-01
      • 2021-08-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多