Como posso ver o plano de explicação no desenvolvedor SQL da Oracle?
eu tenho poucas consultas SQL que tem muito baixo desempenho de pesquisa em execução e eu quero verificar o plano de execução de pesquisa para esta consulta. Estou tentando executar a consulta abaixo, mas não mostra nenhum plano de execução de consulta. Seu único plano de exibição de mensagem para sucesso. Eu não sei se há alguma configuração que temos que fazer no desenvolvedor SQL oracle para vies explicar o plano para a consulta:
EXPLAIN PLAN FOR
Select SO.P_OPTION_ID FROM
SIMSIM
JOIN P_TYPE PT on PT.KEY=SIM.P_TYPE_KEY JOIN P_CONFIG PC ON PC.ID=PT.PRODUCT_CONFIG_ID
JOIN P_OPTION PO ON PO.OPTION_KEY=PC.DEFAULT_PRODUCT_OPTIONS JOIN S_OPTION SO ON SO.SERVICE_ID=SIM.ASSIGNED_TO_SERVICE_ID
JOIN AVV_NO AN ON SIM.ASSIGNED_ANUMBER_ID = AN.ID
where SO.STATUS_ID IN (20,40)
and SO.ID < to_char(SYSDATE - numtodsinterval ( 1,'MINUTE' ), 'YYYYMMDDHH24MISS')||'0000'
and SO.ID > to_char(SYSDATE - numtodsinterval ( 1, 'HOUR' ), 'YYYYMMDDHH24MISS')||'0000'
and NOT EXISTS(SELECT ID from TEMP_BPL T WHERE T.ID = SO.ID );
2 answers
EXPLIQUE O PLANO PARA
Em desenvolvimento SQL , não tem de usar a declaração EXPLAIN PLAN FOR
. Imprensa F10
ou carregue no explique o ícone do Plano .
Será então apresentado na janela de explicação.
Se estiver a utilizar SQL * mais , então use dbms_xplan .
Por exemplo,
SQL> EXPLAIN PLAN FOR
2 SELECT * FROM DUAL;
Explained.
SQL> SELECT * FROM TABLE(DBMS_XPLAN.DISPLAY);
PLAN_TABLE_OUTPUT
--------------------------------------------------------------------------
Plan hash value: 272002086
--------------------------------------------------------------------------
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |
--------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 1 | 2 | 2 (0)| 00:00:01 |
| 1 | TABLE ACCESS FULL| DUAL | 1 | 2 | 2 (0)| 00:00:01 |
--------------------------------------------------------------------------
8 rows selected.
SQL>
Explique apenas mostra como o Optimizador pensa que a consulta será executada.
Para mostrar o verdadeiro plano, terá de executar o sql uma vez. Então use a mesma sessão execute o seguinte:@yoursql
select * from table(dbms_xplan.display_cursor())
Este modo pode mostrar o verdadeiro plano usado durante a execução. Existem várias outras maneiras de mostrar o plano usando dbms_xplan. Você pode pesquisar no Google com o termo "dbms_xplan".