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

Responder a