Oracle SQL文の処理時間を測定
2006.10.10 Tuesday
SQL*Plus上で、SQLの処理にかかった時間を測定する方法があります。手順としては以下の通り。
- 実行結果(クエリの結果)を表示させない。(※ 表示時間もカウントされてしまうため。)
- 経過時間を測定する設定を行う。
- SQL文を実行。
1. に関して索引の絡みなどを考えると、実行計画もあると便利なので、
AUTOTRACEを使用し、結果セットのみを表示しないようにします。経過時間を表示するにはTIMINGを使用します。
- set autotrace traceonly
- set timing on
- select c_hoge from T_HOGE where ・・・
↓こんな感じになります。
SQL> set autotrace traceonly
SQL> set timing on
SQL> select c_hoge from T_HOGE;
12行が選択されました。
経過: 00:00:00.08
実行計画
----------------------------------------------------------
0 SELECT STATEMENT Optimizer=ALL_ROWS (Cost=3 Card=12 Bytes=972)
1 0 TABLE ACCESS (FULL) OF 'T_HOGE' (TABLE) (Cost=3 Card=12 Bytes=972)
統計
----------------------------------------------------------
1 recursive calls
0 db block gets
8 consistent gets
6 physical reads
0 redo size
2773 bytes sent via SQL*Net to client
504 bytes received via SQL*Net from client
2 SQL*Net roundtrips to/from client
0 sorts (memory)
0 sorts (disk)
12 rows processed
索引を設定する前後で調べると、かなり有効な結果が得られるのではないでしょうか。(まぁ、索引設定前後の速度は、時刻を計るまでもない変貌振りですが・・・。)

コメント入力フォーム