日期:2014-05-17  浏览次数:20837 次

游标速度都很慢吗
我写了一存储过程,执行后发现速度很慢,后将中间的代码全删掉,只留下下面的csor_aaa部门,可执行时速度还是很慢,不知怎么解决!
v_mygz有3百多条记录

CURSOR   csor_aaa   IS   select   pu_id,kxid   from   v_mygz   t  
begin

open   csor_aaa;
loop
    fetch   csor_aaa   into   Str_PU_id,Str_KX;
    exit   when   csor_aaa%notfound;
      update   gzjj   set   xms=(值)   where     trim(pu_id)=to_char(Str_PU_ID)   and   ffrq=to_date( '2006-08-01 ', 'yyyy-mm-dd ')   ;
          commit;
end   loop;
close   csor_aaa;
end;

------解决方案--------------------
csor_aaa IS select pu_id,kxid from v_mygz t

lz你的这个cursor是全表扫描啊
------解决方案--------------------
全表扫描当然慢了,表的数据量多少?
过大的话,考虑加上索引
------解决方案--------------------
才300多条记录阿


gzjj 这个表数据量大么
可能是更新的时候满吧

如果是更新的时候慢 ,要在gzjj 加索引

------解决方案--------------------
是你游标查询的表太大了,而且索引做的不好,或者游标查询的是一张视图,而这张视图很慢,你可以直接查询这张表(视图),看一下速度如何!另外,不用每次提交,可以每一百条提交,也有轻微的提速