Substituindo a cláusula having por where

Dúvidas, dicas e truques de SQL, Select, Update, Delete, cláusulas, operações com joins, Funções em SQLs, etc
luiszacheu
Rank: Programador Sênior
Rank: Programador Sênior
Mensagens: 53
Registrado em: Seg, 31 Mai 2010 8:54 am
Localização: Londrina-Pr
Analista/Programador
Luís Gustavo Verri Zacheu

Olá caros amigos, estou com um problema de desempenho em uma consulta que estou fazendo então gostaria de trocar o having por o where. Segue abaixo um exemplo de como está o meu codigo.

Selecionar tudo

 select codigo, descricao, sum(quantidaderece), sum(quantidadevend), sum(quandidadecomp) from (subselect_para_gerar_uma_table
union all
select.... ) 
group by codigo, descricao
having  sum(quantidaderece) > 0
 or  sum(quantidadevend) >0 or sum(quandidadecomp) >0

*Não pude inserir a query original por motivos de segurança.
Obrigado!
marcus.kobel
Rank: Programador Sênior
Rank: Programador Sênior
Mensagens: 45
Registrado em: Qui, 12 Mai 2011 4:54 pm
Localização: Porto Alegre - RS

Cara, não sei se tem MUITA coisa que tu possas fazer pra melhorar a performance. Se tu precisa saber que o SUM dos campos quantidades tem que ser maior que zero, vai ter que usar HAVING.

Uma possível solução (não tem como eu dizer ao certo por tu não postou as subqueries) é colocar esses o filtros DENTRO das subqueries e não deixar com que a query externa faça o filtro, entende? A idéia é tentar reduzir o número de registros gerados pelas subqueries, para que o GROUP BY fique mais rápido. Isso pode ajudar um pouco.

Agora, se tu tem que ler muitos milhares de registro, então senta e chora por que o SELECT vai demorar mesmo. A não ser que tu use algum artifício externo, como por exemplo usar uma tabela extra que seja automaticamente preenchida com os resultados que tu precisa, ou uma materialized view, e coisas do gênero.

Outra coisa que tu pode revisar são as chaves das tabelas e o explain plan do SQL developer, ele pode te ajudar a ver onde a query ta mais lenta.
luiszacheu
Rank: Programador Sênior
Rank: Programador Sênior
Mensagens: 53
Registrado em: Seg, 31 Mai 2010 8:54 am
Localização: Londrina-Pr
Analista/Programador
Luís Gustavo Verri Zacheu

obrgado, vou ver a situações que você postou para mim...
Responder
  • Informação
  • Quem está online

    Usuários navegando neste fórum: Nenhum usuário registrado e 17 visitantes