2012-05-13 7 views
13

実行計画と実行計画の違いは誰にでも分かります。私は実行計画と実行計画の違い

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つの違いは何ですか。

答えて

9

explain planは、実行計画を表示するために使用されるステートメントです。

あなたが表示した2つのサンプルは、ちょうど異なったフォーマットです。それだけです。

あなたがそれらの出力をどれだけ正確に生成したのか、使用していたツールを教えてくれたわけではありません。

しかしif'm間違っていないが、そのうちの一つは、SQL * Plusの他の出力dbms_xplanパッケージの手続きのを使用して内部autotraceの出力です。

+0

は:はい、私は実行計画と実行計画を生成するために、上記のmenthodを使用している.But人々は時々計画、時には実行計画を説明を求める理由を私は知らないのですか? –

+0

@ GauravSoni:それは言葉遣いです。彼らは「実行計画」を求めるとき、彼らはアウトプットに焦点を合わせます。 「説明計画」という用語を使用するときは、どのように実行するかに焦点を当てます(通常、質問は「説明計画の**出力**を表示します」 –

+0

@a_horse_with_no_name)実行計画の最後? – Songo