実行計画とは
- OracleでSQL文を実行する際に、DBが実行する一連の操作
- 実行計画を分析することで、SQL文のメンテナンスが出来る
(SQL文の実行速度を上げるなど)
統計値とは
- テーブルやインデックス内で、どんな値が、どんな頻度で出現するのかをまとめた情報
実行計画・統計値の確認方法
- 下記のSQL文について、実行計画・統計値を確認する方法は3パターンある
- 実際に実行結果に基づく結果なのか、予測した結果なのかはパターンによって異なるので使い分ける必要がある
SELECT * FROM COMPANY WHERE NAME = '会社名A'
1.実行計画:予測値、統計値:予測値
EXPLAIN PLAN FOR SELECT * FROM COMPANY WHERE NAME = '会社名A'
SELECT * FROM TABLE(DBMS_XPLAN.DISPLAY()) ;
2.実行計画:実行値、統計値:予測値
SET SERAVEROUTPUT OFF
EXPLAIN PLAN FOR SELECT * FROM COMPANY WHERE NAME = '会社名A'
SELECT * FROM TABLE(DBMS_XPLAN.DISPLAY_CURSOR) ;
3.実行計画:実行値、統計値:実行値
SET SERAVEROUTPUT OFF
ALTER SESSION SET STATISTICS_LAVEL=ALL;
EXPLAIN PLAN FOR SELECT * FROM COMPANY WHERE NAME = '会社名A'
SELECT * FROM TABLE(DBMS_XPLAN.DISPLAY_CURSOR(FORMAT=>'ALL STATS LAST'))) ;
3つの確認方法の使い分けについて
- SQL文を実行することでDBに負荷がかかる可能性が高い場合は1.を使用する
- ただし、1.は実際の実行計画・統計値と異なる場合があるので参考程度に使用する
- より正確なのは2.と3.