Oracle:查找多个查询运行的总查询运行时间

时间:2018-12-21 22:45:44

标签: sql oracle

我想查找查询运行所花费的总时间(执行时间+提取时间)。我正在使用下面的查询。这是正确的方法吗?

我正在使用的sql_text需要几毫秒的时间才能返回结果。我多次运行sql_text。 V $ SQL为我提供了一个查询运行,执行次数和首次加载时间。如何找到每次查询运行所花费的总时间?

  

select ELAPSED_TIME from V$SQL where sql_text = ""

Edit1 :我的查询差别很小,例如我要插入不同的整数。在V $ SQL中,这些查询具有不同的SQL_ID,但是我无法在AWR中找到它们。另外,ELAPSED_TIME是所有查询执行的总和还是上一次查询执行的平均时间或经过时间?

1 个答案:

答案 0 :(得分:3)

here中记录的ELAPSED_TIME列包含:

  

此游标用于解析,执行和获取的经过时间(以微秒为单位)。如果游标使用并行执行,则ELAPSED_TIME是查询协调器加上所有并行查询从属进程的累积时间。

重要的是统计信息与光标相关。

因此,如果刷新并重新加载光标,则会重置 total 值并从零开始。

要获得更完整的图片,您可以使用AWR,它基本上会定期捕获统计信息并存储以进行报告。

最后的备注-引用SQL语句的典型方法是使用SQL_ID(而不是全文-如果文本是SQL_ID,则基本上是哈希码)。您还将在SQL_ID中找到V$SQL