如何在SQL SERVER中快速有条件地删除海量数据

55次阅读
没有评论

共计 944 个字符,预计需要花费 3 分钟才能阅读完成。

这篇文章主要讲解了“如何在 SQL SERVER 中快速有条件地删除海量数据”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着丸趣 TV 小编的思路慢慢深入,一起来研究和学习“如何在 SQL SERVER 中快速有条件地删除海量数据”吧!

最近有个朋友问我,他说他在 SQLSERVER 删除几百万到几千万数据是显的很慢,帮他分析了一下,提了一些以下意见,或许对很多人有用。如果你的硬盘空间小,并且不想设置数据库的日志为最小 (因为希望其他正常的日志希望仍然记录),而且对速度要求比较高,并清除所有的数据建议你用 turncatetable1, 因为 truncate 是 DDL 操作,不产生 rollback,不写日志速度快一些,然后如果有自增的话,恢复到 1 开始,而 delete 会产生 rollback,如果删除大数据量的表速度会很慢,同时会占用很多的 rollbacksegments,同时还要记录下 G 级别的日志;当然如果有条件删除比如 wheretime〈 2006-3-10 怎么办,能不能不记录日志用 delete,回答是不行的,SQLServer 引擎在设计上就会对 Delete 操作进行日志记录。至今没有办法强制制定某一些语句不记录到日志中,如果在执行 DeleteTable1whereTime〈 2006-3-10 由于涉及的记录比较多, 所以日志记录也相应很大 (3-4G), 如果可行, 我建议用以下方式:选出您所需要保留的记录到新的表。如果您使用 FullRecoveryMode 根据 SELECTINTO 的记录数, 日志可能会比较大 Select*intoTable2FromTable1WhereTime〉= 2006-03-10 然后直接 TruncateTable1。无论何种恢复模式都不会进行日志记录:TruncatetableTable1 最后对 Table2 进行改名为 Table1:ECsp_rename Table2 , Table1

感谢各位的阅读,以上就是“如何在 SQL SERVER 中快速有条件地删除海量数据”的内容了,经过本文的学习后,相信大家对如何在 SQL SERVER 中快速有条件地删除海量数据这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是丸趣 TV,丸趣 TV 小编将为大家推送更多相关知识点的文章,欢迎关注!

正文完
 
丸趣
版权声明:本站原创文章,由 丸趣 2023-07-28发表,共计944字。
转载说明:除特殊说明外本站除技术相关以外文章皆由网络搜集发布,转载请注明出处。
评论(没有评论)