有300w的订购关系数据。需要导入到数据库中,然后将每一条数据分发到不同的区域订购表。
我的处理流程:
1. 首先建一张临时数据表。用sqlldr将300w数据导入到临时表中
2. 用存储过程遍历这张表。每次取5w的数据,放到游标中。然后每一条去做处理,分发到不同的订购表中。
3. 将这5w条数据处理过后,提交,并在临时表中删除这5w条数据。然后循环,再取5w处理。直到临时表中数据删除。
测试结果显示,这样的效率很差。50w的数据处理差不多就要一个小时。
是不是我的处理方式有问题。或者5w的数据放在游标中不合适?
有经验的帮忙看看,谢谢!
关于oracle大数据量导入后进行处理的疑问,效率低下
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
1条回答 默认 最新
- т 2008-10-20 13:45关注
1、确认把数据插入各个订购表中的insert语句是否用到了绑定变量
2、确认是否在游标进行LOOP处理的时候逐行进行了DB检索处理,如果有的话,效率低下就不奇怪了。可以试着把这样的单件检索处理换成join方式
3、根据硬件条件的不同,批量提交件数的最优值是不同的,
确认“5w”是否合适,可以改成5000,10000测试一下本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报