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本文や実行計画にジャンプできます。