Rodrigo

se possivel crie um indice  abaixo
e rode o explain analyze nessa query novamente
 CREATE INDEX idx_leitura_estoque_produtopdvex
 ON leitura_estoque
 USING btree
 (  dtmovto, codemitente,codregistro ,codestabelec);

analyze leitura_estoque  ;
rode o explain em cima da sua query novamente

[]s
Luiz


----- Original Message ----- 
From: "Rodrigo Monteiro" <[EMAIL PROTECTED]>
To: "Comunidade PostgreSQL Brasileira    " 
<[email protected]>
Sent: Friday, September 26, 2008 10:15 AM
Subject: Re: [pgbr-geral]Banco de dados cresce 1,3GB por mês


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

_______________________________________________
pgbr-geral mailing list
[email protected]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Responder a