Rodrigo Monteiro escreveu:
CREATE INDEX idx_leitura_estoque_produto
ON leitura_estoque
USING btree
(codemitente, codestabelec, dtmovto, codproduto);

CREATE INDEX idx_leitura_estoque_produtopdv
ON leitura_estoque
USING btree
(codemitente, codestabelec, dtmovto, equipamento, codproduto);

A manha para criar índices é a seguinte: qual desses campos possui maior especifidade?
Qual desses campos tem mais valores distintos ?
Este(s) campo(s) devem aparecer primeiro no índice...

No caso acima, eventualmente apenas um índice em "codemitente, codestabelec e dtmovto" seria suficiente.
Os demais campos o postrges iria filtrar com seq scans, se você tiver discos rápidos vai ficar legal.
Mas não posso ter certeza, você teria que testar.


=================================================================================

ABAIXO A sql query

select sum(TotItem) as Total, sum(Quantidade * CustoContabil) as Custo, sum(Desconto) as Desconto
from Leitura_Estoque
where CodEmitente = 1 and CodRegistro = 3
and DtMovto between '01/01/2008' and '31/08/2008'
and CodEstabelec = 3

=================================================================================

<- em 10 minutos e 66 segundos ----> em um IBM com 8 GB de memória, 2 processadores Zion: 4.2 Ghz

Mais uma vez vou te pedir pra rodar :
EXPLAIN ANALYZE select sum(TotItem) as Total ......
Mande o resultado pra gente! Tenho quase certeza que os índices não estão sendo utilizados de acordo.
Este comando vai executar a query, então aguarde 11 minutos e 6 segundos (é isso q vc quis dizer?)

PS: Essa query será executada em apenas um core de apenas um processador...
Monitore o andamento da query com o dstat, ou vmmstat. Se não tem, instale :)
-- 

[]´s, ACV

_______________________________________________
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Responder a