- Este tópico contém 6 respostas, 3 vozes e foi atualizado pela última vez 2 anos, 12 meses atrás por Motta.
-
AutorPosts
-
22 de março de 2021 às 2:10 pm #147501ElizaParticipante
oi pessoal,
Alguém pode me ajudar a melhorar a performance de 2 views ?
22 de março de 2021 às 2:41 pm #147502ElizaParticipante1ª 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 vendasselect * 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
26 de março de 2021 às 8:14 pm #147522MottaParticipanteFaç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 ?
27 de março de 2021 às 3:30 pm #147538José Laurindo ChiappaModeradorblz, 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
27 de março de 2021 às 11:26 pm #147540MottaParticipanteO 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.
30 de março de 2021 às 5:54 pm #147569ElizaParticipanteBoa 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.
30 de março de 2021 às 8:55 pm #147570MottaParticipante¡!
-
AutorPosts
- Você deve fazer login para responder a este tópico.
Compartilhe ! Além de ajudar, é legal ! :)
- Clique para compartilhar no Twitter(abre em nova janela)
- Clique para compartilhar no Facebook(abre em nova janela)
- Clique para compartilhar no LinkedIn(abre em nova janela)
- Clique para compartilhar no Reddit(abre em nova janela)
- Clique para compartilhar no WhatsApp(abre em nova janela)
- Clique para compartilhar no Telegram(abre em nova janela)
- Clique para enviar um link por e-mail para um amigo(abre em nova janela)
- Clique para imprimir(abre em nova janela)