Pular para o conteúdo
Visualizando 4 posts - 1 até 4 (de 4 do total)
  • Autor
    Posts
  • #90987
    angelomm
    Participante

      Olá, criei uma view no qual contem relacionamentos a várias tabelas, com uso de outer joins e inner joins, porem em determinadas base essa view se torna lenta, tive outras views que consegui resolver o problema utilizando a mesma como in-line view, alguem poderia me explicar como é o plano de execução da view no oracle, se o mesmo gera todos os dados da view e depois relaciona com outras tabelas.

      Dentre as tabelas, tenho pelo menos 2 com mais de 4 milhoes de registros.

      desde ja agradeço

      Angelo

      #90989
      fsitja
      Participante

        Quando você monta um select com uma view no from, o Oracle avalia o plano de execução num passo só, “embutindo” no seu SQL o código da view como se fossem uma coisa só.

        Nessa etapa não são buscados dados. Apenas o CBO gera o melhor plano de acesso possível a partir das estatísticas disponíveis.

        Se você precisar de alguns palpites de como melhorar o desempenho dessa query sobre a view, ficaria mais simples se você postasse o código que você tem ou, melhor ainda, a estrutura de suas tabelas no BD e uma explicação do que você quer obter (se possível com um exemplo do output).

        #91011
        angelomm
        Participante

          O que eu não consigo entender é porque em determinados bancos a view excecuta com desempenho e outros é péssimo, e em ambos possuem uma estrutura similar com grande volume de dados.

          teve um caso que eu fiz o seguinte sql:

          select * from minha_view v1,tabela t1
          where v1.id = t1.id

          e o desempenho foi péssimo, ai mudei para:

          select * from (select id, campo1, campo2 from t2) v1, tabela t1
          where v1.id = t1.id

          e o desempenho foi otimo.

          Infelizmente não tenho como postar exatamente as tabelas e relacionamentos, pois a empresa não permite.

          Será que não poderia ser algum parametro do oracle? neste caso é oracle 10g.

          #91015
          rwarstat
          Participante

            Angelo,

            A diferença de desempenho pode ser por causa de:
            – diferença de arquitetura dos bancos: ambos são a mesma versão?
            – diferença de hardware e so do servidor: são máquians idênticas? Mesmo SO? Mesmas atualizações?
            – estatísticas desatualizada em alguma base.

            []´s
            Roberto

          Visualizando 4 posts - 1 até 4 (de 4 do total)
          • Você deve fazer login para responder a este tópico.