【发布时间】:2015-07-30 08:05:31
【问题描述】:
我有一个包含很多选择语句的过程。当我运行该过程时,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
所以计算出来的时间是 0.471 毫秒,但 TOAD 说是 146 毫秒。
这是为什么?
【问题讨论】:
-
Toad 对从语句发送到数据库到执行完成并收到返回通知的整个过程进行计时。这将包括网络活动所需的任何时间以及 Toad 将语句发送到 Oracle 并处理结果所需的任何设置/拆卸代码。 Toad 中显示的时间是您在单击执行后到 Toad 为您提供结果所经历的执行时间。如果您想在数据库上获得准确的执行时间,那么您将需要“现在就在这里”所建议的另一种方法。
-
我认为 Michael 的评论和“Be Here Now”的回答相结合就足够了。
标签: oracle stored-procedures toad