2012-05-13 119 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 | 
-------------------------------------------------------------------------------------- 

我收到相同的輸出,所以有什麼兩者之間的區別。

回答

9

explain plan是用來顯示執行計劃的語句。

您顯示的兩個樣品只是格式不同,就這些。

您沒有告訴我們您是如何生成這些輸出的,以及您使用的是哪種工具。

但是,如果沒有弄錯,其中一個是SQL * Plus中的autotrace的輸出,另一個是使用dbms_xplan程序包時的輸出。

+0

:是的,我已經使用了上述menthod生成解釋計劃和執行計劃。但我不知道爲什麼人們有時會問解釋計劃,有時執行計劃? –

+0

@GauravSoni:這只是措辭。當他們要求「執行計劃」時,他們關注產出。當使用術語「解釋計劃」時,他們將重點放在如何運行它(通常問題將「向我們展示解釋計劃的**輸出**) –

+0

@a_horse_with_no_name您能否請我詳細解釋如何解釋表格執行計劃的底部? – Songo