2009/8/31 MIGUEL JOSE DE LIMA <[email protected]> > Fabrízio, Bom Dia! > Os seus exemplos foram de grande valia. >
Que bom que ajudaram! > Mas, aproveitando a sua experiência, gostaria de perguntar mais uma coisa > (se possível a resposta.): > A clausula HAVING tem custo significativo em relação a performace? > conforme > o número de registros lidos! > > Custo significativo é um tanto quanto genérico demais né, uma vez que o custo de execução de uma query depende de inúmeros fatores. A cláusula HAVING [1] opera sobre conjuntos de dados resultantes do uso da cláusula GROUP BY [2], e o que posso afirmar é que o seu uso tem um custo adicional sim, pois primeiro ele monta todo um recordset com o resultado da tua query e sobre esse resultado ela aplica a condição definida nesta cláusula. Falando um pouco mais sobre desempenho o que posso dizer, por experiência própria, é que se você tem um volume muito grande de linhas para processar GROUP BY e HAVING, e as mesmas tendem a crescer a cada dia, vale a pena rever o teu modelo e aplicar algumas refatorações criando uma visão materializada, por exemplo, ou apenas utilizando uma estratégia com triggers para atualização de uma tabela "read-only"... um bom material sobre o assunto podes encontrar em [3] e [4]. [1] http://www.postgresql.org/docs/current/static/sql-select.html#SQL-HAVING [2] http://www.postgresql.org/docs/current/static/sql-select.html#SQL-GROUPBY [3] http://www.agiledata.org/essays/databaseRefactoring.html [4] http://www.agiledata.org/essays/databaseRefactoringCatalog.html Cordialmente, -- Fabrízio de Royes Mello >> Blog sobre TI: http://fabriziomello.blogspot.com
_______________________________________________ pgbr-geral mailing list [email protected] https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
