如何能较快的删除大量数据(几百万条),谢谢

goodluck1 2006-05-25 11:55:17
我搜索了以下以前的帖子,执行了下代码,试了试,不行啊,超时报错。

zjcxc (邹建) 回复于 2005-02-05 08:34:43 得分 50
--如果 Boardid 上没有索引,建议在上面建立一个索引再删除


--如果保留的记录很少,建议用临时表来处理删除

select * into #t from Dv_topic where Boardid<>75
truncate table Dv_topic
set xact_abort on
begin tran
insert Dv_topic select * from #t
drop table #t

...全文
547 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
hr88rong 2006-05-26
  • 打赏
  • 举报
回复
逐月:
你的啥意思啊,小弟不明白,select top 0是不是一条都没选啊,还是全部选了??

既然留下的少与要删的,那
可考虑【坚持信念】的方法啊!

不过
对于由 FOREIGN KEY 约束引用的表,不能使用 TRUNCATE TABLE,而应使用不带 WHERE 子句的 DELETE 语句。由于 TRUNCATE TABLE 不记录在日志中,所以它不能激活触发器。

TRUNCATE TABLE 不能用于参与了索引视图的表

(其实上面“不过”后的内容,我也不太明白啥意思)
xr105 2006-05-26
  • 打赏
  • 举报
回复
--置空表就最快了.
select top 0 * into aa from bb
drop bb
select * into bb from aa
drop aa
Reeezak 2006-05-25
  • 打赏
  • 举报
回复
对啊
那个很常用啊

先把还要留下的数据存到一个表中(可以是临时表)
然后truncate 源表

然后将领事表中的内容插回去

如果要留下的很多(甚至多过要删除的),这个时候直接删除是最好的办法,因为insert也是要写日志的
TERRYYRRET 2006-05-25
  • 打赏
  • 举报
回复
剩余非删除数据不多的话,建议用SELECT 选出来
goodluck1 2006-05-25
  • 打赏
  • 举报
回复
留下的不多大概10几万,要删除700多万条。。。

34,591

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧