日期:2014-05-16  浏览次数:21199 次

oracle的过程中for循环优化运行速度
请问如何优化oracle过程的for循环的速度呢?或者还有哪些方法可以提高运行实现循环呢

在过程中
 for cur2 in (select AA from A表) loop
  insert into B表(BB) values(cur2.AA);
 end loop;

,其中A表的数据好多, 类似这样的过程结构 循环数据执行过程速度非常慢,
如何修改, 给个实例参考。
------解决方案--------------------

insert into B表(BB) select AA from A表;

------解决方案--------------------
我是举例最简单的结构

要是有这么简单我就没必要来这里问菜鸟咯
------解决方案--------------------
for cur2 in (select AA from A表) loop
   
  中间操作许多算法 如统计数据再算分
 end loop;

------解决方案--------------------
批量集合
------解决方案--------------------
为什么要用循环做呢?这种直接有同步语句不就ok?

insert into b(bb) select aa from a;
------解决方案--------------------
把for改成for all 会快一些
------解决方案--------------------
先确认查询慢还是插入慢
------解决方案--------------------
fetch bulk collect into 批量效率的读取游标数据 
------解决方案--------------------
引用:
先确认查询慢还是插入慢
如果查询慢,请优化查询语句;如果数据量太大,亲。。你还是分批执行吧~~~~~~~