你要整表删除吗,那么你用truncate table 可以瞬间删除所有记录,但是这个不记录log,无法回滚。也不能加条件。 如果要加条件,就只好用delete了,或者就是用DTS把你所要的表导出到文本,然后清空表,再把文本导回表中。 你用sp_spaceused 'talbe_name'可以迅速查到你要的记录数,及表所占的空间。 truncate table table_name delete table_name where ......... sp_spaceused 'table_name' 如果这样你可以用bcp先导出你要的5千万数据 先count(*)你的记录然后-8kw=@num 1、在cmd下,导出你要保留的记录到文本data_1中 E:\>bcp "select top @num * from db.dbo.table order by id desc" queryout data_1.txt -c -t "|" -r \n -U sa -P password 2、truncate table table_name ---trun掉你的表 3、将 data_1.txt 的数据导入到table中 E:\temp>bcp db.dbo.Table in data_1.txt -b 5000 -c -t ",|" -r \n -U sa -P password 4、ok搞定 速度绝对比delete快不知道多少倍。 而且日志也比较小。 然后你要高出1千五百万也可以用bcp来做。 效率很高。
如何删除大量数据 sql server2005
最新推荐文章于 2023-05-31 16:11:00 发布