Pular para o conteúdo
Visualizando 7 posts - 1 até 7 (de 7 do total)
  • Autor
    Posts
  • #147501
    Avatar de ElizaEliza
    Participante

      oi pessoal,

      Alguém pode me ajudar a melhorar a performance de 2 views ?

       

       

      #147502
      Avatar de ElizaEliza
      Participante

        1ª view  para melhoria de performance

         

        VIEW_MAIOR_COMPRA = tabela de todas as compras

        SELECT * FROM VIEW_MAIOR_COMPRA vmc
        WHERE vmc.NUNOTACPA = (SELECT MAX(V.NUNOTACPA) FROM TCP_BASEVDAS_CPASGDL V WHERE V.NUNOTA = BAS.NUNOTA AND V.CODPROD = BAS.CODPROD)

         

        TABVENDAS = notas de vendas
        TABITE = itens das vendas

        select * from TABVENDAS vdas
        inner join TABITE ite on vdas.nunota = ite.nunota
        LEFT JOIN VIEW_MAIOR_COMPRA mc on mc.nunota = vdas.nunota and mc.codprod = ite.codprod
        where vdas.datavenda = ’02/03/2021′

         

        objetivo: pesquisar as notas de vendas do dia 02/03/2021, seus itens e trazer a data da última compra de cada produto vendido

         

        #147522
        Avatar de MottaMotta
        Participante

          Faça  assim , esqueça a view.

          Publique a estrutura das tabelas e um exemplo do se quer.

          As tabelas tem índices ?

          As Estatíscas dos banco estão atualizadas ?

           

          #147538
          Avatar de José Laurindo ChiappaJosé Laurindo Chiappa
          Moderador

            blz, Eliza ? Concordo absolutamente com o Motta que vc deve focar PRIMEIRO nos SQLs mais básicos… Assim sendo, PRIMEIRO veja se um simples :

            SELECT (texto do SELECT da view) as mc
            WHERE mc.nunota = numerodenota
            AND mc.codprod = códigodeproduto;

            retorna rápido E gera um plano de Execução aceitável, recomendo Inclusive que vc extraia o plano de execução REAL (com A-ROWS e E-ROWS) dessa consulta, tipo o mostrado em https://blogs.oracle.com/optimizer/how-to-generate-a-useful-sql-execution-plan….
            SE REALMENTE o tempo de resposta foi BOM, o plano de execução foi aceitável E não há diferença significativa entre A-ROWS x E-ROWS ok, tuas Estatísticas tão boas, aí Sim ,vamos analisar o JOIN dessa view com outras tabelas, um JOIN por vez….

            Abraços,

            Chiappa

            #147540
            Avatar de MottaMotta
            Participante

              O fato é que muitas vezes a gente sai tentando uma solução sem definir bem o problema.

              Consultas do tipo maior/menor algo pode-se tentar por MAX MIN mas sem um índices podemos criar um desastre ainda mais se a consulta for frequente.

               

              #147569
              Avatar de ElizaEliza
              Participante

                Boa tarde pessoal,

                Fui documentando as tabelas pra vcs darem uma olhada…. daí, pensando no que vcs comentaram, fiz algumas alterações.

                E ficou mais rápido.

                Obrigada pelas dicas.   Vlw

                 

                Até mais.

                 

                 

                 

                #147570
                Avatar de MottaMotta
                Participante

                  ¡!

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