SQL2005删除大数据

客户端连接也变的异常慢,并且公司的数据库所占空间大,因为是软件是深圳一家软件提供的,只有服务器在本地,而和这个公司沟通异常困难,所以只有自立更生了。

经过简单查看

create table #t(name varchar(255), rows bigint, reserved varchar(20), data varchar(20), 
index_size varchar(20), unused varchar(20))
exec sp_MSforeachtable "insert into #t exec sp_spaceused '?'" 
select * from #t order by name 
drop table #t

发现最大的一个表A,居然有1亿6千万数据,就是它了,并且这个表还在不停增长中,每天大概270-300万行,非常恐怖,这也是我接触过最大数据了,之前应用过的最多也就3千万,跟这比,有点小巫见大巫了,呵呵。

按上头意思,把不必要的删了,然后开始删,最开始是按日期,

between and  这样太慢了,删除一个月数据,都要大半天,很费时间,后来改用ID,根据时间查到某月最大ID是B,删除<B,速度稍微快一点,还是慢,在这里比较笨,删除了近半数据后,查查,也只是少了8千万,还有9千万,还要再删,这时再也不想像上面那样操作了。开始寻找新办法。

发现SQL2005 BCP可以导出导入数据,并且性能非常高,在本机试了一下,不错,每秒 51202.31 行,速度太给力了。那就把需要的数据导出来,然后truncate table,再将数据导回。按照这个思路。

导出-->

EXEC master..xp_cmdshell'BCP "SELECT  * FROM XXX.dbo.A whereid>117634587" queryout e:\A-10.1.txt -c -S".,20001" -U"jtx" -P"Jtx"'
--已复制 49312222 行。
--总时钟时间(毫秒)     : 942750 平均值: (每秒 52306.79 行。)

导入-->

  EXEC master..xp_cmdshell 'BCP XXX.dbo.Ain E:\A-10.1.txt -c -T'


转载于:https://my.oschina.net/u/1020927/blog/172888

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值