分享

快速删除大批量数据

 shymi 2011-11-25

如果要删除成百万,成千万条记录.使用单纯的delete.那简直,几乎是不可能的.

第一:delete语句每条都记录日志.

第二:锁表.如果该表还有人频繁使用.那很快就处异常了.

解决方案:

1.最快的方法是使用truncate table A,由于truncate只记录很少的日志.所以非常之快.但问题是truncate不能带where子句.它用来清空整个表的数据.oracle 据说有delete from table nolog语句.听说也很快.

2.分批执行.

分批执行,这是个策略问题.由于一个delete是一个事务.如果非常大批量执行,执行半小时没还没完成你不管了,或出异常.那就全部回滚到解放前了.

分批执行就是蚂蚁搬家战术。

2005示例: 

  1. WHILE    
  2. BEGIN    
  3.   DELETE TOP(5000) FROM dbo.LargeOrders    
  4.   WHERE OrderDate '19970101'   
  5.       
  6.   IF @@rowcount 5000 BREAK;    
  7. END    
  8. GO 

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多