关于oracle查询时间的判断

溺水的鱼 2006-10-18 05:00:27
我查询一个语句想知道这次查询用了多少时间,请问如何才能做到!
...全文
287 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
溺水的鱼 2006-10-19
  • 打赏
  • 举报
回复
自己顶啊自己顶。。。
溺水的鱼 2006-10-19
  • 打赏
  • 举报
回复
我记得有一个显示执行时间,用到什么索引之类的报告,那个怎么弄出来阿,多谢高手指点!
溺水的鱼 2006-10-18
  • 打赏
  • 举报
回复
我记得有一个显示执行时间,用到什么索引之类的报告,那个怎么弄出来阿,多谢高手指点!
Eric_1999 2006-10-18
  • 打赏
  • 举报
回复
或者用toad里面的query view,可以看到sql运行时间。
Eric_1999 2006-10-18
  • 打赏
  • 举报
回复
SQL> set timing on
SQL> select * from eric_tmp
2 /

ID NAME
--------- --------------------
1 AAA
2 BBB
1 ABC
3 CCC
2 DDD
4


7 rows selected.

real: 47
SQL>
Eric_1999 2006-10-18
  • 打赏
  • 举报
回复
set time on只是显示时间,set timing on才是计时。
ColinGan 2006-10-18
  • 打赏
  • 举报
回复
当然,如果你想最简单的办法就是:

启动sqlplus

SQL> set time on;

然后执行你的SQL语句就可以了.
ColinGan 2006-10-18
  • 打赏
  • 举报
回复
I'm sorry.

这个才能精确到1/100000秒
CREATE OR REPLACE PACKAGE timing AS
PROCEDURE starttiming;
PROCEDURE stoptiming;
PROCEDURE printelapsed(p_message IN VARCHAR2);
END;
/

CREATE OR REPLACE PACKAGE BODY timing AS
v_starttime NUMBER;
v_endtime NUMBER;

PROCEDURE starttiming IS
BEGIN
SELECT to_number(to_char(systimestamp, 'ssxff'))
INTO v_starttime
FROM dual;
END;

PROCEDURE stoptiming IS
BEGIN
SELECT to_number(to_char(systimestamp, 'ssxff'))
INTO v_endtime
FROM dual;
END;

PROCEDURE printelapsed(p_message IN VARCHAR2) IS
v_elapsed NUMBER := v_endtime - v_starttime;
BEGIN
dbms_output.put_line('Elapsed Time for ' || p_message || ' is ' ||
v_elapsed || ' seconds.');
END;
END;
/


example:

timing.starttiming;

sql....

timing.stoptiming;
timing.printelapsed('test1');
ColinGan 2006-10-18
  • 打赏
  • 举报
回复
时间可以精确到1/1000000秒,我一直使用下面的方法:

create or replace package timing as
procedure starttiming;
procedure stoptiming;
procedure printelapsed(p_message in varchar2);
end;
/
create or replace package body timing as
v_starttime number;
v_endtime number;

procedure starttiming is
begin
v_starttime:=DBMS_UTILITY.GET_TIME;
end;

procedure stoptiming is
begin
v_endtime:=DBMS_UTILITY.GET_TIME;
end;

procedure printelapsed(p_message in varchar2) is
v_elapsed number:=(v_endtime-v_starttime)/100;
begin
dbms_output.put_line('Elapsed Time for '||p_message||' is '||
v_elapsed||' seconds.');
end;
end;
/


example:

timing.starttiming;

sql....

timing.stoptiming;
timing.printelapsed('test1');


溺水的鱼 2006-10-18
  • 打赏
  • 举报
回复
各位高手来帮帮忙呀,多谢拉!怎么一个回复的都没有。。。。

17,377

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 基础和管理
社区管理员
  • 基础和管理社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧