Resultado do EXPLAIN ANALYZE:

"Aggregate  (cost=2411513.21..2411513.23 rows=1 width=40) (actual 
time=975252.776..975252.776 rows=1 loops=1)"
"  ->  Index Scan using idx_dtmovtole on leitura_estoque  
(cost=0.00..2338671.14 rows=9712275 width=40) (actual time=147.812..950822.701 
rows=8329310 loops=1)"
"        Index Cond: ((dtmovto >= '2008-01-01'::date) AND (dtmovto <= 
'2008-08-31'::date))"
"        Filter: ((codemitente = 1::numeric) AND (codregistro = 3::numeric) AND 
(codestabelec = 3::numeric))"
"Total runtime: 975270.688 ms"


Thu, 25 Sep 2008 16:40:23 -0300, André Volpato  escreveu:> > > > > > > > > 
Rodrigo Monteiro escreveu:>  type="cite">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.
> 
> 
>  
> type="cite">=================================================================================>
>  
> 
> 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
[email protected]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Responder a