在 SQLSERVER 中快速有条件删除海量数据

 更新时间:2008年10月03日 08:42:31   作者:  
最近有个朋友问我,他说他在SQLSERVER删除几百万到几千万数据是显的很慢,帮他分析了一下,提了一些以下意见,或许对很多人有用。

如果你的硬盘空间小,并且不想设置数据库的日志为最小(因为希望其他正常的日志希望仍然记录),而且对速度要求比较高,并清除所有的数据建议你用turncate table1,因为truncate 是DDL操作,不产生rollback,不写日志速度快一些,然后如果有自增的话,恢复到1开始,而delete会产生rollback,如果删除大数据量的表速度会很慢,同时会占用很多的rollback segments,同时还要记录下G级别的日志 ;当然如果有条件删除比如where time〈'2006-3-10' 怎么办,能不能不记录日志用delete,回答是不行的,SQL Server 引擎在设计上就会对 Delete 操作进行日志记录。至今没有办法强制制定某一些语句不记录到日志中,如果在执行 Delete Table1 where Time 〈 '2006-3-10' 由于涉及的记录比较多,所以日志记录也相应很大(3-4G),如果可行,我建议用以下方式:

选出您所需要保留的记录到新的表。如果您使用 Full Recovery Mode
根据SELECT INTO的记录数,日志可能会比较大
Select * into Table2 From Table1 Where Time 〉 = '2006-03-10'

然后直接Truncate Table1。无论何种恢复模式都不会进行日志记录:Truncate table Table1

最后对Table2进行改名为Table1:EC sp_rename 'Table2', 'Table1'

相关文章

  • 浅述SQL Server的聚焦强制索引查询条件和Columnstore Index

    浅述SQL Server的聚焦强制索引查询条件和Columnstore Index

    本文主要讲了强制使用索引条件来进行查询,当对于使用默认创建索引进行查询计划时觉得不是最优解,可以尝试使用强制索引来进行对比找出更好得解决方案。简短的内容,深入的理解.有兴趣的朋友可以看下
    2016-12-12
  • SQL性能优化之定位网络性能问题的方法(DEMO)

    SQL性能优化之定位网络性能问题的方法(DEMO)

    这篇文章主要介绍了SQL性能优化之定位网络性能问题的方法的相关资料,需要的朋友可以参考下
    2016-04-04
  • SQL语句优化提高数据库性能

    SQL语句优化提高数据库性能

    为了获得稳定的执行性能,SQL语句越简单越好。对复杂的SQL语句,要设法对之进行简化,本文给大家介绍优化SQL语句提高数据库性能,对sql语句优化性能优化相关知识感兴趣的朋友一起学习吧
    2016-01-01
  • 教你编写SQLMap的Tamper脚本过狗

    教你编写SQLMap的Tamper脚本过狗

    安全狗其实是比较好绕的WAF,绕过方法很多,但这里我们就用一种:注释混淆,这篇文章主要介绍了教你编写SQLMap的Tamper脚本过狗,需要的朋友可以参考下
    2023-02-02
  • idea连接SQL Server数据库的详细图文教程

    idea连接SQL Server数据库的详细图文教程

    Idea的还有个强大之处就是连接数据库,就可以少开一个数据库工具了,下面这篇文章主要给大家介绍了关于idea连接SQL Server数据库的详细图文教程,文中通过图文介绍的非常详细,需要的朋友可以参考下
    2022-12-12
  • 数据库日常练习题,每天进步一点点(1)

    数据库日常练习题,每天进步一点点(1)

    下面小编就为大家带来一篇数据库基础的几道练习题(分享)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧,希望可以帮到你
    2021-07-07
  • SQl 语句(常见)

    SQl 语句(常见)

    SQl 语句(常见)...
    2006-08-08
  • PL/SQL Developer过期的两种解决方法

    PL/SQL Developer过期的两种解决方法

    登陆PL/SQL Developer,会出现PL/SQL Developer要到期了,或者已经到期了。遇到这种情况怎么处理呢,接下来小编给大家带来了plsql developer 过期的解决方法,感兴趣的朋友一起看看吧
    2017-10-10
  • 一步步教你建立SQL数据库的表分区

    一步步教你建立SQL数据库的表分区

    分区存储提高了数据库的性能,被分区存储的数据物理上是多个文件,但逻辑上任然是一个表,对表的任何操作都跟没分区之前一样。插入、删除、查询、更新等操作的时候,数据库会自动为你找到对应的分区,然后执行操作。
    2015-09-09
  • SQL Server Alwayson添加监听器失败的解决方法

    SQL Server Alwayson添加监听器失败的解决方法

    这篇文章主要为大家详细介绍了SQL Server Alwayson添加监听器失败的解决方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-07-07

最新评论