mssql sql server根据条件快速删除表中海量数据的方法记载


最近项目中,遇见一个特别棘手的问题,现在有一张上亿条的数据表,需要进行瘦身,
将2017年之前的历史进行清理
采用delete from删除数据,删了整整一天,还未运行完毕,而且整个服务器硬盘都爆满,
采用delete from删除数据,导致日志快速增长,而且日志占满整个文件后,日志还未删除完毕,所以我们一定需要采用不记录日志的模式对数据进行删除操作。
下文将记录后续解决此问题的办法

1 备份整个数据库,放置安全地带
2 建一张新表,将不删除的数据放入此表中
select *into newTable from tableName where writeDate <='2017-1-1 0:00:00'
3 truncate table tableName drop table tableName
4 设置newTable 上的标示列,标示列起始值,索引 约束 默认值 等表相关设置
5 修改newTable名字为tableName
exec re_name ‘newTable’ ‘tableName’
6 海量数据表删除完毕