解决方案 »

  1.   

           sql语句连接问题,过滤掉多的条件尽量放在下面(sql是至下而上,至右到左解析的),还有你这过程字段看的太杂了。没细看,是否一定需要游标才能完成处理?我没看到逻辑性多强。游标里的语句如果慢,相当于循环了很多次,速度自然就慢。 建议1:打开执行计划,检查下sql语句 2.逻辑性不强的语句,尽量不要使用游标。
      

  2.   

    早期的oracle版本,条件的先后顺序大有讲究,不过最新版的oracle这些差异已经基本没有了,oracle在执行前会自行调整你的条件执行顺序的
      

  3.   

    overdue1,overdue2,overdue3,overdue4,overdue5
    这5个变量获取语句大致相同
    可以使用sum(case when)的形式一次性取出
    select sum(case when 变量1取值时专有的条件 then bt01.AR_AMOUNT end) overdue1,
    ……--下面同理overdue1
    from 
    ……--那几个表
    where 几个变量取值时相同的条件
      

  4.   

    months_between(sysdate, ACC_RECV_DATE) >= 24  这种可以改成moths_between 在右边。既然都是 group by bf01.scc_company_id, bf01.SETTLE_TYPE_NO 为什么不是一次sum出多有的单位,存到一个object中,
    然后再用for语句遍历插入数据。