我有一组需要连续运行的查询,将上一个查询的结果带到下一个查询中。我唯一需要的是列表中最后一个查询的执行时间,但SET TIMING ON
给了我整个块的执行时间。知道如何获得最后一次查询的时间吗?牛肉是我不希望以前的查询干扰它给我的时间。下面的例子:
set echo on;
set feedback on;
set timing on;
set serveroutput on;
declare
pid varchar(20);
aid varchar(20);
bob char(1);
begin
select st.some_id, st.person_id into aid, pid
from some_table st
join person p on st.person_id = p.person_id
where p.name not like '%bob%' and rownum = 1;
-- get timing of another query here
end;
当我运行它时,它给了我代码块的总执行时间:
Elapsed: 00:00:00.045
在查询之前保存
sysdate
或到 pl/sql 变量中,然后用于输出差异。systimestamp
dbms_output.put_line
我可能会按照杰克道格拉斯的建议做你需要做的事情。但是如果你真的想花哨,你可以查询
elapsed_time
并除以查询的数量execution
,这样你就可以得到一个查询的平均执行时间。具有以下功能...
...你可以像这样得到这些数字: