実行計画と説明計画の違いは誰か説明してもらえますか?.
実行すると
set autotrace traceonly;
select * from emp where empno=7369;
Execution Plan
----------------------------------------------------------
0 SELECT STATEMENT Optimizer Mode=ALL_ROWS (Cost=1 Card=1 Bytes=38)
1 0 TABLE ACCESS BY INDEX ROWID SCOTT.EMP (Cost=1 Card=1 Bytes=38)
2 1 INDEX UNIQUE SCAN SCOTT.PK_EMP (Cost=0 Card=1)
Explain Plan
explain plan for select * from emp where empno=7369;
select * from table(dbms_xplan.display);
Plan hash value: 2949544139
--------------------------------------------------------------------------------------
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |
--------------------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 1 | 38 | 1 (0)| 00:00:01 |
| 1 | TABLE ACCESS BY INDEX ROWID| EMP | 1 | 38 | 1 (0)| 00:00:01 |
|* 2 | INDEX UNIQUE SCAN | PK_EMP | 1 | | 0 (0)| 00:00:01 |
--------------------------------------------------------------------------------------
同じ出力が得られるので、2つの違いは何ですか。
explain plan
は、実行プランを表示するために使用されるステートメントです。
表示した2つのサンプルは、フォーマットが異なるだけです。それだけです。
これらの出力をどの程度正確に生成したか、どのツールを使用していたかは教えてくれませんでした。
しかし、間違いがなければ、そのうちの1つはSQL * Plus内のautotrace
の出力であり、もう1つはdbms_xplan
パッケージのプロシージャを使用するときの出力です。
Explainプランは、オプティマイザーが実行時に発生すると考えるものであり、実行プランは、クエリの実行時に実際に発生します。
こちらのリンクをご覧ください。
http://tkyte.blogspot.co.uk/2007/04/when-explanation-doesn-sound-quite.html