暂无图片
Oracle 用存储过程来删除数据,一次性删除300万数据用时1小时20分钟,效率低吗?
我来答
分享
暂无图片 匿名用户
Oracle 用存储过程来删除数据,一次性删除300万数据用时1小时20分钟,效率低吗?

Oracle 用存储过程来删除数据,一次性删除300万数据用时1小时20分钟,效率低吗?

我来答
添加附件
收藏
分享
问题补充
4条回答
默认
最新
dbtiger

很低了。

存储过程落地也是调用delete语句。而且一次大量delete通常要考虑好rede和undo,避免刷爆,非常危险的操作。。。

建议将需要的数据通过create table a1 as select * from a where xxx=ww;过滤并另存表,然后将原表truncate或者drop。
祝你成功!

暂无图片 评论
暂无图片 有用 1
暂无图片
Kubee

这速度感觉好慢喔

暂无图片 评论
暂无图片 有用 0
赵勇

从经验上看,挺慢的。但具体问题具体分析。基于真实的执行计划、资源开销和等待事件来分析,会更靠谱一些。

暂无图片 评论
暂无图片 有用 0
Thomas

不建议一次性,也就是写一条SQL删除300万记录。不如做个存储过程,里面放游标,将删除的数据再分解,比如删除100次,每次约3万记录,每次删除完就COMMIT,这样,可以避免将UNDO撑得太大。也就是说把一个批量删除细粒度化。

暂无图片 评论
暂无图片 有用 1
回答交流
提交
问题信息
请登录之后查看
邀请回答
暂无人订阅该标签,敬请期待~~
暂无图片墨值悬赏