2015-06-21 51 views
0

我不是Oracle的專家,只是開始解決問題。當我執行以下查詢時,它使我輸出|(管道)格式。我想EXPLAIN PLAN輸出在tabluarjsonxml,等等......這可能嗎?在Oracle中解釋計劃輸出

EXPLAIN PLAN FOR SELECT * FROM user_master; 
SELECT plan_table_output FROM TABLE(DBMS_XPLAN.DISPLAY('plan_table')); 

Output: 

    Plan hash value: 3060894046 

    --------------------------------------------------------------------------------- 
    | Id | Operation   | Name  | Rows | Bytes | Cost (%CPU)| Time  | 
    --------------------------------------------------------------------------------- 
    | 0 | SELECT STATEMENT |    |  1 | 94 |  2 (0)| 00:00:01 | 
    | 1 | TABLE ACCESS FULL| USER_MASTER |  1 | 94 |  2 (0)| 00:00:01 | 
    --------------------------------------------------------------------------------- 
+0

當你使用像蟾蜍,他們爲您提供瞭解釋計劃數顯示選項的IDE。也許這對你來說是一種選擇。 –

+0

如果在運行EXPLAIN PALN之前在sqlplus中發出「SET MARKUP ON」,會發生什麼情況?通常這會將查詢結果呈現爲HTML,因此可能值得一試。 – TenG

+0

您可能最適合使用文本格式。它有大部分有用的信息,並經常用於印刷資料。當人們在這裏張貼解釋計劃的圖形表示時,他們通常會忽略重要信息,或者比較難以比較計劃。 –

回答

2

你可以得到它以表格的形式,如果你直接訪問PLAN_TABLE

select plan_id, 
     operation, 
     options, 
     cost, 
     cpu_cost, 
     io_cost, 
     temp_space, 
     access_predicates, 
     bytes, 
     object_name, 
     object_alias, 
     optimizer, 
     object_type 
from plan_table 
start with parent_id is null 
connect by prior id = parent_id; 

由於PLAN_TABLE可以包含不同的計劃,它可能會更好使用顯式聲明ID:

explain plan 
    set statement_id = 'foo' 
for 
select ...; 

然後用它在plan_table上選擇:

select .... 
from plan_table 
start with parent_id is null and statement_id = 'foo' 
connect by prior id = parent_id; 

爲了得到這個爲XML,你可以使用:

select dbms_xplan.display_plan(type => 'xml') 
FROM dual