V$SQL 表已用时间

paw*_*que 1 oracle

v$sql 表中的 elapsed_time 列是否指示每次查询执行的时间还是所有执行的总和?

Lei*_*fel 6

来自11.2 数据库参考文档:

此游标用于解析、执行和获取的经过时间(以微秒为单位)

这是一个演示:

SQL> SELECT sql_text, elapsed_time FROM v$sql WHERE sql_text like '%lewap %';

SQL_TEXT
-----------------------------------------------------------------------------
ELAPSED_TIME
------------
SELECT sql_text, elapsed_time FROM v$sql WHERE sql_text like '%lewap %'
        5112


SQL> SELECT sql_text, elapsed_time FROM v$sql WHERE sql_text like '%lewap %';

SQL_TEXT
-----------------------------------------------------------------------------
ELAPSED_TIME
------------
SELECT sql_text, elapsed_time FROM v$sql WHERE sql_text like '%lewap %'
       26332


SQL> SELECT sql_text, elapsed_time FROM v$sql WHERE sql_text like '%lewap %';

SQL_TEXT
-----------------------------------------------------------------------------
ELAPSED_TIME
------------
SELECT sql_text, elapsed_time FROM v$sql WHERE sql_text like '%lewap %'
       65886


SQL> SELECT sql_text, elapsed_time FROM v$sql WHERE sql_text like '%lewap %';

SQL_TEXT
-----------------------------------------------------------------------------
ELAPSED_TIME
------------
SELECT sql_text, elapsed_time FROM v$sql WHERE sql_text like '%lewap %'
      103225
Run Code Online (Sandbox Code Playgroud)

如果您需要一次执行的计时,您可以在 SQL*Plus 会话中设置计时,使用 TIMED_STATISTICS 打开跟踪,或向 SQL 添加注释,以便在 v$sql 中只有一次执行。