Alguém pode explicar um pouco sobre o plano de explicação e como obter o plano de explicação para uma consulta. Além disso, se houver algum script sql que possa ser usado como utilitário para isso, isso seria ótimo.
oracle
oracle-11g-r2
user419534
fonte
fonte
Respostas:
Você pode usar o pacote DBMS_XPLAN :
fonte
Substitua o ... pela sua instrução SQL. Depois de executar isso, execute o seguinte para visualizar o plano:
Para obter mais informações, consulte as seções Visão geral ou Uso no Guia de ajuste de desempenho do Oracle 11g.
fonte
O plano de execução estimado do SQL
O plano de execução estimado é gerado pelo Optimizer sem executar a consulta SQL. Você pode gerar o plano de execução estimado a partir de qualquer cliente SQL usando EXPLAIN PLAN FOR ou pode usar o Oracle SQL Developer para esta tarefa.
EXPLIQUE O PLANO PARA
Ao usar o Oracle, se você anexar o
EXPLAIN PLAN FOR
comando a uma consulta SQL específica, o banco de dados armazenará o plano de execução estimado nos associadosPLAN_TABLE
:Para visualizar o plano de execução estimado, você precisa usar
DBMS_XPLAN.DISPLAY
, conforme ilustrado no exemplo a seguir:Desenvolvedor Oracle SQL
Se você instalou o SQL Developer, poderá obter facilmente o plano de execução estimado para qualquer consulta SQL sem precisar acrescentar o comando EXPLAIN PLAN FOR:
O plano de execução SQL real
O plano de execução real do SQL é gerado pelo Optimizer ao executar a consulta SQL. Portanto, diferentemente do plano de execução estimado, você precisa executar a consulta SQL para obter seu plano de execução real.
O plano real não deve diferir significativamente do estimado, desde que as estatísticas da tabela tenham sido coletadas adequadamente pelo banco de dados relacional subjacente.
Dica de consulta GATHER_PLAN_STATISTICS
Para instruir o Oracle a armazenar o plano de execução real para uma determinada consulta SQL, você pode usar a
GATHER_PLAN_STATISTICS
dica de consulta:Para visualizar o plano de execução real, você pode usar
DBMS_XPLAN.DISPLAY_CURSOR
:Ativar STATISTICS no nível de conexão do banco de dados
Se você deseja obter os planos de execução para todas as consultas geradas em uma determinada sessão, é possível definir a configuração da
STATISTICS_LEVEL
sessão como ALL:Isso terá o mesmo efeito que definir a
GATHER_PLAN_STATISTICS
dica de consulta em todas as consultas de execução. Portanto, assim como naGATHER_PLAN_STATISTICS
dica de consulta, você pode usarDBMS_XPLAN.DISPLAY_CURSOR
para visualizar o plano de execução real.fonte