ablog

不器用で落着きのない技術者のメモ

SQL の実行時間

SQLの実行時間(v$sql.elapsed_time)って

  1. SQL文の実行時間?
  2. トランザクションの開始〜終了までの時間?

のどちらかと思って調べてみた。
結論は、「1.SQL文の実行時間」だった。

検証結果

  • SQL を実行する(commitしない)
insert into emp(id, name) values ('003', 'neo');
select * from emp;
  • 実行時間を確認する
set pagesize 1000
set linesize 140
col hash_value for 9999999999
col address for a10
col sql for a50
col elapsed_time for 9999999999
col last_active for a20

select hash_value, address,substr(sql_text,1, 50) sql, elapsed_time, to_char(last_active_time, 'YYYY-MM-DD HH24:MI:SS') last_active 
    from v$sql a 
        left outer join v$session b
            on a.address = b.sql_address
        where sql_text like 'insert into emp%' or
            sql_text like 'select * from emp'
    order by last_active_time desc;
  • 実行結果
 HASH_VALUE ADDRESS    SQL                                                ELAPSED_TIME LAST_ACTIVE
----------- ---------- -------------------------------------------------- ------------ --------------------
 1078299227 60D0BD0C   insert into emp(id, name) values ('003', 'neo')            1136 2009-05-14 02:27:46
 1745700775 60C3B9E4   select * from emp                                          3697 2009-05-14 02:27:46

SQL> /

 HASH_VALUE ADDRESS    SQL                                                ELAPSED_TIME LAST_ACTIVE
----------- ---------- -------------------------------------------------- ------------ --------------------
 1078299227 60D0BD0C   insert into emp(id, name) values ('003', 'neo')            1136 2009-05-14 02:27:46
 1745700775 60C3B9E4   select * from emp                                          3697 2009-05-14 02:27:46

SQL> /

 HASH_VALUE ADDRESS    SQL                                                ELAPSED_TIME LAST_ACTIVE
----------- ---------- -------------------------------------------------- ------------ --------------------
 1078299227 60D0BD0C   insert into emp(id, name) values ('003', 'neo')            1136 2009-05-14 02:27:46
 1745700775 60C3B9E4   select * from emp                                          3697 2009-05-14 02:27:46

ELAPSED_TIME の単位はマイクロ秒。1136 なら 0.001136 秒。


[参考]
http://otndnld.oracle.co.jp/document/products/oracle10g/102/doc_cd/server.102/B19228-03/dynviews_2.htm#132530