首页
关于我们
服务项目
作品展示
服务支持
联系我们
友情链接
网站地图
 您当前位置:网络学院 -> 编程开发系-> 数据库-> SQL、ACCESS
如何在SQLSERVER中快速有条件删除海量数据
作者:admin 来源:网络
日期: 2007-2-27
站内搜索
文章页数:[1] 

最近有个朋友问我,他说他在SQLSERVER删除几百万到几千万数据是显的很慢,帮他分析了一下,提了一些以下意见,或许对很多人有用,再者也好长没写过BLOG了,一起探讨一下

如果你的硬盘空间小,并且不想设置数据库的日志为最小(因为希望其他正常的日志希望仍然记录),而且对速度要求比较高,并清除所有的数据建议你用turncate table1,因为truncate 是DDL操作,不产生rollback,不写日志速度快一些,然后如果有自增的话,恢复到1开始,而delete会产生rollback,如果删除大数据量的表速度会很慢,同时会占用很多的rollback segments,同时还要记录下G级别的日志 ;当然如果有条件删除比如where time<'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'

文章页数:[1] 
放大字体显示 缩小字体显示 打印文章 推荐给朋友
热门文章
·MS SQL 数据库备份和还原的几种方法
·SQL Server日志清除的两种方法
·全面接触SQL语法
·牢记!SQL Server数据库开发的二十一条军规
·SQLServer数据库安全规划全攻略
·SQL Server2000数据库文件损坏时如何恢复
·SQL 语法参考手册
·如何把ACCESS转成SQL数据库
·深入探讨SQL Server 2000对XML的支持
·SQL Server 2005数据加密技术应用研究
最新文章
·实战MSSQL 2000数据库之MSSQL 2000的安装
·SQL SERVER与ACCESS、EXCEL数据转换
·改善SQL Server内存管理
·如何为用户设置密码
·Asp备份与恢复SQLServer数据库
·SQL Server2000数据库文件损坏时如何恢复
·SQL 语法参考手册
·SQLServer数据库安全规划全攻略
·用Access将XLS与MDB文件格式互相转换
·Oracle与SQL Server在企业应用中的比较
相关主题
版权申明:除部分特别声明不要转载,或者授权本站独家播发的文章外,大家可以自由转载本站的原创文章,但原作者和来自本站的链接必须保留(非本站原创的,按照原来自一节,自行链接)。文章版权归本站和作者共有。
转载要求:转载之图片、文件,链接请不要盗链到本站,且不准打上各自站点的水印,亦不能抹去本站水印。
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有。
发表评论  打印  刷新  推荐给朋友  返回顶部  关闭

网上大名: