2015-06-21 2 views
0

Я не эксперт по Oracle, только что начал работать. Когда я выполняю следующие запросы, он дает мне вывод в формате | (конвейер). Я хочу EXPLAIN PLAN вывод в tabluar или json или xml и т. Д. Возможно ли это?Объяснить вывод плана в 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

Что произойдет, если вы выполните «SET MARKUP ON» в sqlplus перед запуском EXPLAIN PALN? Обычно это отображает результаты запроса как 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_:

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 
Смежные вопросы