使用SQL Developer查找查询的执行时间

jav*_*thu 11 sql oracle-sqldeveloper

我是Oracle DB的初学者.我想知道查询的执行时间.此查询返回大约20,000条记录.当我看到SQL Developer时,它只显示50行,最多可以调整为500.并且使用F5高达5000.

我会通过在应用程序中进行更改来完成,但是由于它在生产中运行,因此无法进行应用程序重新部署.所以,我只能使用SQL Developer.我不知道如何获得执行查询所花费的秒数?任何想法都会对我有所帮助.谢谢.

此致,JE

小智 14

如果向下滚动超过最初返回的50行,则会获取更多内容.当我想要所有这些时,我只需点击50中的第一个,然后按下CtrlEnd一直滚动到底部.

这将更新所使用时间的显示(在结果上方会显示"All Rows Fetched:20000 in 3.606 seconds"),为您提供完整查询的准确时间.


Tri*_*mon 5

如果您的语句是已部署的应用程序的一部分,并且您有权访问该视图V$SQLAREA,则可以检查EXECUTIONS和的数量CPU_TIME。您可以使用以下方式搜索该声明SQL_TEXT

SELECT CPU_TIME, EXECUTIONS 
  FROM V$SQLAREA
 WHERE UPPER (SQL_TEXT) LIKE 'SELECT ... FROM ... %';
Run Code Online (Sandbox Code Playgroud)

这是确定实际运行时间的最精确方法。V$SESSION_LONGOPS您可能也会对这里的景色感兴趣。

如果您无权访问这些视图,您还可以使用游标循环来运行所有记录,例如

CREATE OR REPLACE PROCEDURE speedtest AS
   count number;

   cursor c_cursor is
     SELECT ...;
BEGIN
   -- fetch start time stamp here
   count := 0;

   FOR rec in c_cursor
   LOOP
     count := count +1;
   END LOOP;   
   -- fetch end time stamp here
END;
Run Code Online (Sandbox Code Playgroud)

根据体系结构,这可能或多或少准确,因为数据可能需要传输到运行 SQL 的系统。