実行計画の表示方法


Oracleでの実行計画の確認は、以下の2ステップからなります。

  1. explain plan for : 実行計画を PLAN_TABLEに保存。

  2. 実行計画をフォーマットし表示。

実行計画の作成と保存

実行計画を作成するには、SQL文の前にexplain plan forを付けるだけです。

EXPLAIN PLAN FOR select * from dual

explain plan forコマンドは、開発環境や SQL*Plusで実行できます。しかしこのコマンドを実行しただけでは 実行計画は表示されず、PLAN_TABLEというテーブルに保存されるだけです。 10g以降から、このテーブルはグローバル一時表として 自動的に使用可能になります。それ以前のバージョンでは、 スキーマごとに作成する必要があります。データベース管理者に 作成を依頼するか、Oracleのインストール時に create table文を実行します。

$ORACLE_HOME/rdbms/admin/utlxplan.sql

この文は、PLAN_TABLEを作りたいどのスキーマでも 実行できます。

警告

explain plan forコマンドは、 実際に文が実行される時と同じ実行計画を生成するとは限りません。

このウェブサイトにぴったりのカップは僕たちのショップにあります。
#見た目もいい感じだし、ここでの僕の仕事を支えてくれています

実行計画の表示

DBMS_XPLANパッケージは9i R2で登場し、 PLAN_TABLEから実行計画を取り出してフォーマットし 表示できます。次は、現在のデータベースセッションで取り出した 最新の実行計画を表示する方法を示す例です。

select * from table(dbms_xplan.display)

もしこの文がうまく動かないようなら、DBAの助けを呼びましょう。

このクエリは、以下の通りの形式で実行計画を表示します。

--------------------------------------------------------------
| Id | Operation         | Name | Rows | Bytes | Cost (%CPU)|.
--------------------------------------------------------------
|  0 | SELECT STATEMENT  |      |    1 |     2 |     2   (0)|.
|  1 |  TABLE ACCESS FULL| DUAL |    1 |     2 |     2   (0)|.
--------------------------------------------------------------

この実行計画に表示されている列のうちのいくつかは、 この本ではページの幅に合うように削除しています。

Photo of Markus Winand
Markus Winand氏は、開発者がSQLパフォーマンスを改善するお手伝いをしています。 彼は、SQL Performance Explainedの 著者でもあり、出張トレーニングhttp://winand.at/での リモート講義も 行っています。