SQL Statisticsセクションには複数のランキングが並びます。それぞれが異なる観点でSQLをランク付けしているため、状況に応じて見るべきランキングが変わります。

Elapsed Time Top 10

総実行時間が長いSQL。長時間実行されている処理を特定するときに見ます。

代表的なパターン

  • SELECT * FROM 大きなテーブル ...
  • 複雑な結合クエリ
  • バッチ系の重いSQL
着目ポイント: SQL_ID をコピーして実行計画(EXPLAIN PLAN)を確認する。

CPU Time Top 10

CPU消費量が多いSQL。解析・ソートが多い処理を特定するときに見ます。

代表的なパターン

  • GROUP BY / ORDER BY
  • 複雑な計算ロジック
  • 関数を多用したWHERE句
着目ポイント: ハードパース・解析過多の場合はバインド変数の使用を検討する。

Physical Reads Top 10

物理ディスク読み込みが多いSQL。インデックス未使用・フルスキャンを特定するときに見ます。

代表的なパターン

  • Full Table Scan クエリ
  • インデックス未使用クエリ
  • 巨大データのスキャン
着目ポイント: EXECUTIONS(実行回数)も合わせて確認。
少ない実行回数で読み込み量が多い = 危険な兆候。

SQL_IDの活用

各ランキングには SQL_ID(Oracle がSQLを一意に識別する文字列)が付随しています。これをコピーして以下のような調査に活用します。

  • V$SQL / DBA_HIST_SQLTEXT でSQL本文を確認
  • DBMS_XPLAN で実行計画を確認
  • SQLチューニングアドバイザに投入
AWRレポートをHTML形式で生成している場合、SQL_IDはレポート内のリンクになっており、クリックでSQL本文や実行計画にジャンプできます。