专注于互联网--专注于架构

最新标签
网站地图
文章索引
Rss订阅

首页 »数据库 » 如何删除sqlserver:如何在SQLSERVER中快速有条件删除海量数据 »正文

如何删除sqlserver:如何在SQLSERVER中快速有条件删除海量数据

来源: 发布时间:星期日, 2009年9月6日 浏览:93次 评论:0
1.SQLSERVER数据库改bit类型为 not Boolean(即,true改成false;false改成true)
例:update 表 bit字段=bit字段-1
最近有个朋友问我他说他在SQLSERVER删除几百万到几千万数据是显很慢帮他分析了提了些以下意见或许对很多人有用再者也好长没写过BLOG了起探讨
如果你硬盘空间小并且不想设置数据库日志为最小(希望其他正常日志希望仍然记录)而且对速度要求比较高并清除所有数据建议你用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 * o Table2 From Table1 Where Time > = '2006-03-10'
然后直接Truncate Table1无论何种恢复模式都不会进行日志记录
Truncate table Table1
最后对Table2进行改名为Table1
EC sp_rename 'Table2', 'Table1'
0

相关文章

读者评论

发表评论

  • 昵称:
  • 内容: