游标速度都很慢吗
我写了一存储过程,执行后发现速度很慢,后将中间的代码全删掉,只留下下面的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 加索引
------解决方案--------------------是你游标查询的表太大了,而且索引做的不好,或者游标查询的是一张视图,而这张视图很慢,你可以直接查询这张表(视图),看一下速度如何!另外,不用每次提交,可以每一百条提交,也有轻微的提速