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

Quando um SQL correto produzirá um resultado errado


Uma coisa que você pode fazer é aplicar a dica NO_QUERY_TRANSFORMATION introduzida no Oracle 10g.

Se isso produzir o resultado desejado, você sabe que está enfrentando um bug do Oracle, pois nenhuma dica deve alterar o resultado real de uma consulta.

Ao mesmo tempo, você pode ter resolvido seu problema, exceto que talvez seu plano de execução não seja satisfatório.

O bug que você está enfrentando (não sei se é um bug conhecido) é que o otimizador do Oracle pode não interpretar corretamente a intenção da consulta original ao transformar a consulta para um melhor plano de execução (visualizações de mesclagem etc.). Ao usar a dica, você instrui o otimizador a não fazer isso.

O fenômeno é visto com mais frequência com consultas complexas envolvendo visualizações de desempenho em linha.

Atualmente não tenho nenhum exemplo de código para reproduzir esse problema, mas estou trabalhando nisso.

UPDATE:Parece que isso é de fato para o que a dica se destina - eu encontrei isso:

documentação .