Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

Quando usar dicas na consulta oracle


A maioria das dicas é uma forma de comunicar nossa intenção ao otimizador. Por exemplo, o leading dica que você mencionou significa juntar tabelas nesta ordem . Por que isso é necessário? Muitas vezes é porque a ordem de junção ideal não é óbvia, porque a consulta está mal escrita ou as estatísticas do banco de dados são imprecisas.

Portanto, um uso de dicas como leading é descobrir o melhor caminho de execução e, em seguida, descobrir por que o banco de dados não escolhe esse plano sem a dica. A coleta de novas estatísticas resolve o problema? Reescrever a cláusula FROM resolve o problema? Nesse caso, podemos remover as dicas e implantar o SQL nu.

Às vezes, há momentos em que não podemos resolver esse enigma e temos que manter as dicas na produção. No entanto, esta deve ser uma rara exceção. A Oracle teve muitas pessoas muito inteligentes trabalhando no Cost-Based Optimizer por muitos anos, então suas decisões são geralmente melhores que as nossas.

Mas há outras dicas que não hesitaríamos em ver na Produção. append muitas vezes é crucial para ajustar inserções em massa. driving_site pode ser vital no ajuste de consultas distribuídas.

Por outro lado, outras dicas são quase sempre abusadas. Sim parallel , Eu estou falando de voce. Colocando cegamente /*+ parallel (t23, 16) */ provavelmente não fará com que sua consulta seja executada dezesseis vezes mais rápido, e não raramente resultará em mais lento recuperação do que uma execução de thread único.

Então, resumindo, não existe um conselho universalmente aplicável sobre quando devemos usar dicas. As coisas chave são:
  1. compreender como funciona o banco de dados e, principalmente, como funciona o otimizador baseado em custo;
  2. compreender o que cada dica faz;
  3. teste as consultas sugeridas em um ambiente de ajuste adequado com dados equivalentes à produção.

Obviamente, o melhor lugar para começar é a documentação do Oracle . No entanto, se você quiser gastar algum dinheiro, o livro de Jonathan Lewis sobre the Cost-Based Optimizer a> é o melhor investimento que você pode fazer.