关于oracle大数据量导入后进行处理的疑问,效率低下

有300w的订购关系数据。需要导入到数据库中,然后将每一条数据分发到不同的区域订购表。



我的处理流程:



1. 首先建一张临时数据表。用sqlldr将300w数据导入到临时表中



2. 用存储过程遍历这张表。每次取5w的数据,放到游标中。然后每一条去做处理,分发到不同的订购表中。



3. 将这5w条数据处理过后,提交,并在临时表中删除这5w条数据。然后循环,再取5w处理。直到临时表中数据删除。



测试结果显示,这样的效率很差。50w的数据处理差不多就要一个小时。



是不是我的处理方式有问题。或者5w的数据放在游标中不合适?



有经验的帮忙看看,谢谢!

1、确认把数据插入各个订购表中的insert语句是否用到了绑定变量
2、确认是否在游标进行LOOP处理的时候逐行进行了DB检索处理,如果有的话,效率低下就不奇怪了。可以试着把这样的单件检索处理换成join方式
3、根据硬件条件的不同,批量提交件数的最优值是不同的,
确认“5w”是否合适,可以改成5000,10000测试一下