找出oracle select语句花费多少时间的最佳方法是什么。我有以下查询,我想为其查询时间,但是,由于该查询带来了4000条记录,并且需要花费时间才能在屏幕上显示这4000条记录,所以上述经过的时间可能不正确。
有没有一种方法可以将其包装到游标中,然后从sql plus运行它,以便我获得执行此所需的正确时间?
SELECT a.code, NVL(a.org, ' '), NVL(a.office_number, ' '), SUBSTR(a.code, 0, 2)
FROM PARTICIPANT a WHERE a.type_code = 'PRIME';
Run Code Online (Sandbox Code Playgroud)
在SQL * Plus中,您还可以使用简单的TIMING选项:
SQL> SET TIMING ON
SQL> SELECT bla FROM bla...
...
Elapsed: 00:00:00:01
SQL> SELECT bar FROM foo...
...
Elapsed: 00:00:23:41
SQL> SET TIMING OFF
Run Code Online (Sandbox Code Playgroud)
这将分别报告每个语句的计时信息。
另一种选择是设置单个计时器:
SQL> TIMING START mytimer
SQL> ... run all my scripts ...
SQL> TIMING STOP
timinig for: mytimer
Elapsed: 00:00:08.32
Run Code Online (Sandbox Code Playgroud)
您甚至可以嵌套这些单独的计时器-将TIMING STOP最新的计时器弹出堆栈。
我能想到的有几种方法。
我通常通过将它运行到一个表中来做这种事情CREATE TABLE AS SELECT....,这意味着我经常用许多名为MIKE_TEMP_1.
另一个选项是在 SQL*Plus 中使用SET AUTOTRACE TRACEONLY,它应该运行所有查询但禁止打印结果。