为什么TOAD中的执行时间比使用SYSTIMESTAMP手动计算执行时间要高?

时间:2015-07-29 23:51:42

标签: oracle stored-procedures toad

我有一个包含很多select语句的过程。当我运行该过程时,TOAD的查询查看器选项卡中的执行时间远远高于在过程开始和结束时使用SYSTIMESTAMP计算的执行时间。

步骤:

DECLARE

/* Declare Variables */

BEGIN

    /* Initalize Variables */
    startTime number;
    endTime number;
    totalTime number;

    startTime :=  to_number(TO_CHAR (SYSTIMESTAMP, 'MISS.FF' )); 
    dbms_output.put_line('Start Procedure: '||startTime );

    /* Execute a lot of SQL */

    endTime :=   to_number(TO_CHAR (SYSTIMESTAMP, 'MISS.FF'  )); 
    dbms_output.put_line('End Procedure: '||endTime );

    totalTime := endTime-startTime;

    dbms_output.put_line('Total Time in Seconds: '||totalTime );
END;

DBMS输出:

Start Procedure: 3645.427147
End Procedure: 3645.427618
Total Time in Seconds: .000471

所以计算出的时间是.471毫秒,但是TOAD表示它是146毫秒。

enter image description here

为什么会这样?

1 个答案:

答案 0 :(得分:2)

所有挂钟时间可能会有所不同 - 例如,你不知道TOAD究竟如何测量它。我不认为TOAD值得信赖。如果您想要精确测量,请使用DBMS_UTILITY.GET_TIME/GET_CPU_TIMEsql trace - 它们是按设计完成的。