如果有一张表有10000万条数据,要求删除990万条,请问如何删除

日志 2009-10-16 11:55:41
对于海量数据进行操作之前一直没有经验,请教各位高人对于海量数据操作有啥最佳实践。
比如:如果有一张表有1000万条数据,要求删除990万条,请问如何删除?(要考虑性能)
1.如果是通过程序(如JAVA的JDBC)删除,如何获得最好性能?
2.如果通过存储过程删除又如何获得最好的性能?

谢谢各位了!!
...全文
265 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
admin 2009-10-22
  • 打赏
  • 举报
回复
我个人觉得,如果是海量数据,目的是得到剩下的数据.
1.如果不是很急的话,
如果用delete一条条的删除是比较合理的.这样系统
稳定.
2.如果想很快得到结果:
还是用把总数据放入一个新表total,删除的放入一个新表deltable.
用sql查出后,先drop掉原表,再create同一表,然后把查询出来的数据
Insert到原表中.
flybird66 2009-10-20
  • 打赏
  • 举报
回复
1 先创建新表,再把原表drop掉,再改过名来。
2 根据ID,一条一条删,每条间隔别太短,大概5-10秒比较好。不过这样就会很麻烦,时间很长。
guishuanglin 2009-10-19
  • 打赏
  • 举报
回复
注意:不要用 delete!!
用DROP与create
guishuanglin 2009-10-19
  • 打赏
  • 举报
回复
1,创建 新表
2,查出10万条,插入一个新的临时表
3,DROP 原表
4,修改表名
ACMAIN_CHM 2009-10-16
  • 打赏
  • 举报
回复
有1000万条数据,要求删除990万条

还不如新建一表,插入这10万条 来得快,然后再将原表清空。把数据insert 回去
日志 2009-10-16
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 acmain_chm 的回复:]
有1000万条数据,要求删除990万条

还不如新建一表,插入这10万条 来得快,然后再将原表清空。把数据insert 回去
[/Quote]

哦,我理解你的意思,是不是先查出10万条,插入一个新的临时表,然后情况原来表里面的所有数据,再把新的临时表的数据插入会原来的表?

顺便请教一下,如果从性能考虑,还有其他更好的办法么?
日志 2009-10-16
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 acmain_chm 的回复:]
有1000万条数据,要求删除990万条

还不如新建一表,插入这10万条 来得快,然后再将原表清空。把数据insert 回去
[/Quote]

关键是原来的表里就有有这么多数据,这些都是历史数据,而且按目前的删除条件大致需要删除990万条

2,209

社区成员

发帖
与我相关
我的任务
社区描述
其他数据库开发 其他数据库
社区管理员
  • 其他数据库社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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