首页 > 数据库技术 > 详细

sql 循环条件小批量删除语句

时间:2021-09-03 19:55:02      阅读:15      评论:0      收藏:0      [点我收藏+]

删除记录过程中遇到了 千万级别以及上亿数据表中要删除一部分数据,如果 只是delete 一条语句执行,那就要锁表好久而且效率也很差,

因此用此方法来执行每次小范围的批量删除是个好办法~!

 

declare @begdate DATETIME
declare @enddate DATETIME

set @begdate=2020-01-05  --从0开始
set @enddate=2020-01-31  --循环次数


    while (@begdate <= @enddate)
    
    BEGIN
    
        waitfor delay 00:00:02  --每次任务的间隔时间,避免长时间锁表造成其他用户的使用问题比如删一次 停5分钟;这里设置的时间是间隔2秒;
        
              --SET ROWCOUNT 10  更进一步的控制每次删除的记录数
DELETE FROM u_sale_c WHERE busno IN (SELECT busno FROM c_org_busi WHERE area NOT IN (SELECT strctgid FROM dpt_class WHERE strclass = 条件条件)) AND accdate = @begdate SELECT @@ROWCOUNT AS DelRows --打印执行结果 SET @begdate = dateadd (DAY, 1, @begdate) END

 

还有一种解决方法是 set rowcount 10 这种方法在当前的 连接中 会对所有的执行语句都 只列出前10条(跟临时表的作用范围相似),处理完后要 set rowcount 0 来释放 这点要注意~!

 

sql 循环条件小批量删除语句

原文:https://www.cnblogs.com/juices/p/15222537.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!