oracle 存储过程执行速度比较慢,怎样定位到出问题的地方,或者说怎样优化存储过程的效率,谢谢各位大虾相助!!!

解决方案 »

  1.   

    每一步都记录执行的起始及结束时间,然后打印出来每步的执行时间,看看哪步费时最长,然后看看是否能优化该SQL。
    模拟断点调试。
      

  2.   

    在pl/sql中可以单步执行,关注重点SQL语句
    另外,就是要在算法上考虑了
      

  3.   

    create procedure p1
    is
      v_time date;
    begin
      v_time := sysdate;
      sqlstatement...
      insert into log_table(begin_time,end_time) values(v_time,sysdate);
      
      v_time := sysdate;
      sqlstatement...
      insert into log_table(begin_time,end_time) values(v_time,sysdate);
    end;
      

  4.   

    1. 先定位执行速度慢的语句,只能单步调试,或加入记录时间的代码(记录时间最好用systimestamp,这样比较精确)
    2. 对执行速度慢的语句,查看执行计划,找出速度慢的原因。
    如果单个语句执行没有太大问题,那就只能检查自己的算法了。
      

  5.   

    应该是某个sql执行很慢,可以写一个Log记录每个步骤的时间这样就知道哪里慢了,然后改进