SQL Server删除大量数据相关问题

到了年底需要核查数据库的日子。今天才核查一个大型数据库的时候,发现了一个因为bug未做删除写入了一亿条数据的表,还好只是一张展示数据的表。借这个机会真好来说下删除大量数据踩过的坑。DeleteSQL语法:Detele 表名 where 条件优点:按条件删除缺点:慢!很慢,而且当删除庞大的数据时,会强势的占有整张表格,让你什么也干不了。干不了也就算了,执行的删除还不能停...
摘要由CSDN通过智能技术生成

       到了年底需要核查数据库的日子。今天才核查一个大型数据库的时候,发现了一个因为bug未做删除写入了一亿条数据的表,还好只是一张展示数据的表。借这个机会真好来说下删除大量数据踩过的坑。

  • Delete 

SQL语法:Detele 表名 where 条件

优点:按条件删除

缺点:慢!很慢,而且当删除庞大的数据时,会强势的占有整张表格,让你什么也干不了。干不了也就算了,执行的删除还不能停,因为SQL Server中的Delete是一个事务的执行方法,在执行的过程中强行终止,他会回滚到做这个删除操作之前。想象一下,一次性删除100万条数据,执行方法一直在那里转个4,50分钟,你还不知道删除了多少了的情况...

适用方向:删除按条件查出来的少量数据。

优化方案:优化的方向是避免数据库的长时间占有,将大量的数据通过循环的方式批次处理。适用于需要删除按条件查出来的大量数据,同样需要花费很长的时间,但是不会长期占用表。

WHILE 1 = 1
BEGIN 
   DELETE TOP(5000) FROM dbo.Table  WHERE time< '2016-12-12';
   IF @@rowcount < 5000 
    BREAK;
END

利用循环的方式来删除表中的数据,每次只删除5000条࿰

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值