Estou estudando Explain plan and Execution plan
no Oracle e de acordo com o que li até agora, o plano explicado pode diferir do plano real usado durante a execução da instrução. Então eu acho que os planos de execução são mais úteis optimization purposes
em comparação com os planos de explicação.
Minha pergunta :
Como você costuma gerar um plano de execução para uma instrução Sql? Depois de ler artigos diferentes, estou um pouco confuso agora porque em cada um deles é apresentada uma abordagem diferente! Por exemplo, me deparei com este:
explain plan
set statement_id = 'ex_plan1' for
select phone_number
from employee
where phone_number like '650%';
select PLAN_TABLE_OUTPUT
from table (DBMS_XPLAN.DISPLAY(STATEMENT_ID=>'ex_plan1'));
Isso é
correct way
para ter o plano de execução (não o plano de explicação)?Quais são as outras maneiras de ter o plano de execução correto? (Aquele
that optimizer
que escolheu executar a instrução).
desde já, obrigado
Resposta à sua 1ª pergunta
NÃO, isso é um plano de explicação e não um plano de execução.
Comando EXPLAIN PLAN - exibe um plano de explicação para uma instrução SQL sem realmente executar a instrução.
Resposta à sua 2ª pergunta:
Abaixo irá mostrar o plano de execução do último SQL executado na sessão atual
Abaixo mostrará o plano de execução do uso de SQL_ID:
Você também pode usar V$SQL_PLAN, pois, em última análise, esta visão é usada para gerar o plano de execução por DBMS_XPLAN
Por favor, consulte os links abaixo para maior clareza sobre este assunto:
Link1 Link2