weixin_42297447 2008-10-19 21:39
浏览 323
已采纳

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

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



我的处理流程:



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



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



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



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



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



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

  • 写回答

1条回答 默认 最新

  • т 2008-10-20 13:45
    关注

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

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 如何用stata画出文献中常见的安慰剂检验图
  • ¥15 c语言链表结构体数据插入
  • ¥40 使用MATLAB解答线性代数问题
  • ¥15 COCOS的问题COCOS的问题
  • ¥15 FPGA-SRIO初始化失败
  • ¥15 MapReduce实现倒排索引失败
  • ¥15 ZABBIX6.0L连接数据库报错,如何解决?(操作系统-centos)
  • ¥15 找一位技术过硬的游戏pj程序员
  • ¥15 matlab生成电测深三层曲线模型代码
  • ¥50 随机森林与房贷信用风险模型