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

oráculo - mesma consulta, mas plano diferente em 11g e 12c


O plano de execução escolhido pelo otimizador escolhido pode variar muito mesmo entre dois ambientes da mesma versão, não apenas 11g e 12c. Depende de muitos fatores, mas principalmente:
  • Número de linhas na tabela (são semelhantes entre os envs?)
  • Quais índices estão presentes (os dois bancos de dados têm exatamente os mesmos índices?)
  • Existem estatísticas para a tabela e os índices, e quão atualizados eles estão? Se não estiver atualizado, reúna as estatísticas das tabelas e os índices.

Se você puder postar esses detalhes, posso fornecer uma resposta mais útil.

Além disso, o código parece gerado automaticamente, se você tiver liberdade para modificá-lo, com base nos detalhes, podemos sugerir uma consulta e/ou dicas reescritas.

Se você não puder modificar o código, poderá forçar um plano com o SQL Plan Management (SPM) - exporte do banco de dados onde ele é executado mais rapidamente e importe para o outro banco de dados.

ATUALIZAÇÃO

Use esta versão simplificada do SQL para gerar o plano:
SELECT * FROM DMProgDate_00001
 WHERE ProgressOID IN ( 
   SELECT OID FROM DMProgress_00001 
    WHERE Project = 'Moho'
      AND Phase = 'Procurement'
      AND Displine = 'Q340'
      AND ROWNUM <= 20
    ORDER BY actCode
  );