Oracle一个包里的函数,前几天速度还好,好像也没有改动什么,今天速度变的很慢,我调试进去看,
当执行完游标c1,把c1赋给变量%rowtype,fetch的时候速度很慢,不知道是什么原因,测试时,c1里面只有1条记录,而且查询速度也快。请大家帮忙解决
当执行完游标c1,把c1赋给变量%rowtype,fetch的时候速度很慢,不知道是什么原因,测试时,c1里面只有1条记录,而且查询速度也快。请大家帮忙解决
调试欢乐多
select *
from a
where (a.mrlmcode = v_mcode or v_mcode is null) and
a.mrlrdate>=to_date(P_SDATE, 'yyyymmdd')
and a.mrlifchk = v_ifchk
order by a.mrlrdate; view_mrl meterread_lkg%rowtype;
open c1(P_MICODE, P_ISCHK);
loop
fetch c1 into view_mrl;
sql满简单的
1.查询慢
不知道你的表数据量,注意你的查询用到了a表的3个字段,如果已经全部建立了单个字段的索引,应该用and_equal提示将3个索引连起来,或者建立复合索引。
select /*+and_equal(a,idx_mrlmcode,idx_mrlrdate,idx_mrlifchk)*/*
from a
where (a.mrlmcode = v_mcode or v_mcode is null) and
a.mrlrdate>=to_date(P_SDATE, 'yyyymmdd')
and a.mrlifchk = v_ifchk
order by a.mrlrdate;
2.你要插入的表有某些字段上的约束存在问题,可以先去掉要插入表的主键,索引再尝试执行该过程。
from a
where (a.mrlmcode = v_mcode or v_mcode is null) and
a.mrlrdate>=to_date(P_SDATE, 'yyyymmdd')
and a.mrlifchk = v_ifchk
order by a.mrlrdate;
--1、游标所使用的sql语句查询时间为多长?2、游标有没有退出的语句
exit when cur%notfound;
使索引无效了