①は、explain plan for + sql文によってオラクルのオプティマイザが選択した「実行計画(予定)」を取得するというものです。 ※ explain plan 文による実行計画の取得では、sqlの実際の実行は行なわれないため、実行結果やsql統計情報は取得できません。 ・事前準備 Oracle 固有の部分があるかもしれません。SQL-Server、MDB では注意のこと。 表結合解析 ・表結合では、次のように NESTED LOOPS と、それぞれのテーブルに対する走査方法を解析できる。 実行したsqlの実行計画はv$sql_planで見ることができます。例えば、select dept.dname, emp.ename from emp i… Oracle である問い合わせのクエリが、インデックスを使っているかどうか確認するときの方法です。よく知られているものですがツールが無くて SQL*Plus だけで対応しなければならないとき用にメモして … 実行計画や統計情報の出力を停止する。 ・set autotrace on explain sqlの実行結果と、実行計画のみ出力する ・set autotrace on statistics sqlの実行結果と、統計情報のみ出力する ・set autotrace traceonly sqlの実行結果を出力せずに、実行計画と統計情報のみ出力する。 目的 . explain plan 文による実行計画の取得とは異なり dml の処理とフェッチ、データ転送処理も行なわれる(※)ので大量の件数を取得する検索文の場合には注意する。 (※) traceonly を使用することでデータ表示に伴う速度の低下は軽減することは可能. 昔のoracleでは、sql*plus単体で実行計画を確認する方法はexplain planしかありませんでした。 このため、実行計画の確認というと、explain planについて言及されることが多かったのですが、 explain planには大きな問題があります。 sqlの実行計画を見るためによく使うdbms_xplan.display。 ここに'outline'または'advanced'オプションを渡すと、実際に付与されるヒント句が表示されるようになる。 これは'all'オプションでは表示されず、ドキュメントにも記載がないが、以下の本に詳細が書かれている。 掲題の通り、explain planやset autotraceで表示される実行計画は実際に実行したときの実行計画ではない場合があ … explain plan、set autotraceの実行計画は実際とは異なる実行計画が表示される場合がある. sqlの実行計画を見るためによく使うdbms_xplan.display。 ここに'outline'または'advanced'オプションを渡すと、実際に付与されるヒント句が表示されるようになる。 これは'all'オプションでは表示されず、ドキュメントにも記載がないが、以下の本に詳細が書かれている。 explainステートメントとは explainは、sqlの実行計画に関する情報を取得するためのステートメントです。実行計画とは「どのインデックスを使って(あるいはインデックスを使わずにテーブルスキャンで)クエリーを処理するか」をmysqlが判断した結果のことです。 autotrace 準備作業 図の「実行計画a」と「実行計画b」は、それぞれデータの変動に対して相反する性能特性を持つ2種類の実行計画と考えてください(例えばフルスキャンとインデックスアクセスなど)。ここで初期性能は、実行計画aで得られていたとします。 実行計画の確認方法 実行計画は主に以下のような方法で取得することができます。本ページではそれぞれの設定手順を記載します。 ・sqlplusでauto traceを設定する ・SQLトレースを設定する ・explain plan文を実行する ・動的パフォーマンスビューから確認する(9i~) SQL チューニング編3 - SQL 実行計画解析、EXPLAIN、ヒントオプション. 図の「実行計画a」と「実行計画b」は、それぞれデータの変動に対して相反する性能特性を持つ2種類の実行計画と考えてください(例えばフルスキャンとインデックスアクセスなど)。ここで初期性能は、実行計画aで得られていたとします。 昔のoracleでは、sql*plus単体で実行計画を確認する方法はexplain planしかありませんでした。 このため、実行計画の確認というと、explain planについて言及されることが多かったのですが、 explain planには大きな問題があります。 実行計画と実行統計がどのように変化するのかを見てみる。 まず、オプティマイザが算出したコストを見ると、100倍以上に増えている事が分かる。 統計の consistent gets の値も8倍以上も増えている。 EXPLAIN PLAN文を使用すると、指定したSQL文を実行するためにOracle Databaseが使用する実行計画を決定できます。この文によって、実行計画の各手順を記述している行が、指定した表に挿入されます。SQLトレース機能の一部としてEXPLAIN PLAN文を発行することもできます。