请问,delete一亿条数据怎么快?

社区

MS-SQL Server 帖子详情 请问,delete一亿条数据怎么快? SHHMing 2008-12-22 06:00:56 请问,delete一亿条数据怎么快?

这些数据里面有一些数据是需要保留的,根据数据的时间字段

...全文

607 20 打赏 收藏 请问,delete一亿条数据怎么快? 请问,delete一亿条数据怎么快? 这些数据里面有一些数据是需要保留的,根据数据的时间字段 复制链接

扫一扫 分享 转发到动态 举报 AI 作业

写回复 配置赞助广告取 消

确 定

用AI写文章 20 条回复 切换为时间正序 请发表友善的回复… 发表回复 打赏红包 需支付: 0.00 元 取 消 确 定 海鲨数据库架构师:曾凡坤.姒 2008-12-23 打赏举报 回复 把那一部分保留的先insert into 到临时表

truncate 你的表

最后把数据再倒回来 w2jc 2008-12-23 打赏举报 回复 [Quote=引用 2 楼 wzy_love_sly 的回复:]

把那一部分保留的先insert into 到临时表

truncate 你的表

最后把数据再倒回来

[/Quote]

如果这1亿条记录占表记录总数的大多数,则上面的方法比较快。

如果你的表有几亿条记录,那么还是老老实实删除吧,

删除之前把不必要的索引删除,

删除完之后再重建索引。 happycat1029 2008-12-23 打赏举报 回复 如果表中的记录只有1亿条左右,则先把需要的数据查询出来放进一个新表(select * into new_table from old_table),这样的话可以避免产生很多的log(因为使用into);然后使用truncate table清空掉整个数据(在这个操作之前记得把需要的数据一定要放入刚才的新表中),这样效率很高,而且没有log,比直接drop要好很多。

以上意见,仅供参考!

orochi_gao 2008-12-23 打赏举报 回复 lz的表是Log表?如果要保留的记录不多,将要保留的记录放到一个新表中,备份原表,删除原表,将新表改为原表名 brooklyng60 2008-12-23 打赏举报 回复 顶,删除数据时使用truncate table效率最高

首先将需要的数据查询出来然后在truncate mysk8868 2008-12-23 打赏举报 回复 建议新备份,检查约束,备份约束,生成sql脚本,去掉约束,删除所不要的数据,添加约束,检查约束。完成!不建议使用truncate!!!!很危险!除非你的数据不重要! rfq 2008-12-23 打赏举报 回复 删除效率有什么要求?

昵称被占用了 2008-12-23 打赏举报 回复 如果事先把表按日期字段分区,删除或者转移一个分区就非常快了,就算要删除的不是整个分区,也可以先增加一个分区把数据分开再删除整个分区

yygyogfny 2008-12-23 打赏举报 回复 关注 parss 2008-12-23 打赏举报 回复

把那一部分保留的先insert into 到临时表

truncate 你的表

最后把数据再倒回来

ruihuahan 2008-12-23 打赏举报 回复 楼上的方法不错 jacklinchen 2008-12-22 打赏举报 回复 [Quote=引用 2 楼 wzy_love_sly 的回复:]

把那一部分保留的先insert into 到临时表

truncate 你的表

最后把数据再倒回来

[/Quote]

赞同 dawugui 2008-12-22 打赏举报 回复 1.把需要的数据查询出来放进一个新表.

select * into new_table from old_table

2.然后truncate table old_table

truncate table old_table

3.从新表把数据插会旧表

insert into old_table select * from new_table

4.删除新表

drop table new_table nalnait 2008-12-22 打赏举报 回复 [Quote=引用 1 楼 roy_88 的回复:]

整個表?

truncate table tableName

[/Quote]. xiaoku 2008-12-22 打赏举报 回复 sp_rename 'a', 'b'

如疯子... lansz 2008-12-22 打赏举报 回复 [Quote=引用 2 楼 wzy_love_sly 的回复:]

把那一部分保留的先insert into 到临时表

truncate 你的表

最后把数据再倒回来

[/Quote]

交换表名也可以,记得把索引什么的在新表上面建上就好了

loworth 2008-12-22 打赏举报 回复 关注... 百年树人 2008-12-22 打赏举报 回复 where 时间> and 时间< wzy_love_sly 2008-12-22 打赏举报 回复 把那一部分保留的先insert into 到临时表

truncate 你的表

最后把数据再倒回来 中国风 2008-12-22 打赏举报 回复 整個表?

truncate table tableName 删除一张数据表的所有数据delete和truncate哪个更好? 删除一张数据表里面的所有数据delete和truncate哪个更好?

delete和truncate二者在清除数据表数据时的区别? mysql数据库删除千万条数据的操作方案,直接delete会很久 在线上有一张表很大,积累了几年的消费数据,现在需要把这张表几年前的数据给清掉,数据量将近1亿,直接按年份将其中的数据delete,你会发现删了几小时都没有返回。这是因为每执行一次delete,需要同时将该行的删除操作记录作为事务记录在日志中保存以便进行回滚。

最终采用的方案是:

(1)抽取需要保留的数据到备份表中,

(2)truncate旧表

(3)备... truncate和delete有何区别?哪一种操作性能更快? truncate是直接把高水位线降下来,由于oracle在检索数据的时候是检索高水位线以下的数据这样可以快速定位需要检索数据块的范围,降下来以后那些之前那些被占用的数据块会分批释放,空间得以重用,这个速度是非常快因为他不像delete操作实际上是把检索到的每个数据块都标识为删除,实际空间并没有释放还是可以恢复的,相比之下truncate的速度是比delete要快速的多 【mysql】 如何一次性同时insert、delete、update多条数据? 一句话总结:写个存储过程执行

打开Navicat 在查询里面输入:

test() 是存储过程方法名,

DECLARE bank_id int DEFAULT 173: 声明int类型变量bank_id默认为173;

WHILE bank_id < 1000 DO :当bank_id<1000的时候执行(前置条件: bank_id作为主键 且自增)

INSERT into sys_bank(bank_id,station_name) values(bank_id,‘汽车站’); 要执行的sql 删除十万条数据时比较delete和truncate的效率 删除10条数据的时候,delete:用了大约20秒钟,而truncate只用了大约0.6秒多,不到0.7秒

结论很简单:

删除大量的数据的时候,使用truncate要比delete在速度上快的多!...

MS-SQL Server

34,838

社区成员

254,630

社区内容

发帖 与我相关 我的任务 MS-SQL Server MS-SQL Server相关内容讨论专区 复制链接

扫一扫 分享 确定 社区描述 MS-SQL Server相关内容讨论专区 社区管理员

加入社区

获取链接或二维码

近7日

近30日

至今

加载中

查看更多榜单

社区公告

暂无公告 试试用AI创作助手写篇文章吧

+ 用AI写文章