Paulo, boa tarde...

No teu email inicial, você disse que criou o indice xix1_cliente em desenv e
resolveu, mas não resolveu em produção. Olhando o teu explain, podemos ver
que um dos pontos de impacto, como falado anteriormente é a entidade
logradouro_bairro:

Desenv:
                          ->  Index Scan using logradouro_bairro_pkey on
logradouro_bairro logradouro3_  (cost=0.00..6.07 rows=1 width=8) (actual
time=9.047..9.048 rows=1 loops=284) Index Cond: (logradouro3_.lgbr_id =
clienteend2_.lgbr_id)

Produção:
                                ->  Seq Scan on logradouro_bairro
logradouro3_  (cost=0.00..2033.86 rows=117186 width=8) (actual
time=0.011..359.858 rows=117186 loops=1)

Temos um acesso sequencial ai... E nesse ponto, o custo da consulta comeca a
ficar muito elevada.

Dá uma olhada nessa entidade em produção... Se para o atributo em questão
você tem um indice...

Outra coisa, para melhorar um pouco o banco na hora do parse, inverta a
ordem dos atributos no teu relacionamento (o analisador de consultas
provavelmente vai fazer isso pra vc, mas não custa nada dar uma
"maozinha"... rsss), algo como:

select count(distinct cliente0_.clie_id) as col_0_0_
from cadastro.cliente cliente0_
    left outer join cadastro.cliente_tipo clientetip1_ on
clientetip1_.cltp_id = cliente0_.cltp_id
    left outer join cadastro.cliente_endereco clienteend2_ on
clienteend2_.clie_id = cliente0_.clie_id
    left outer join cadastro.logradouro_bairro logradouro3_ on
logradouro3_.lgbr_id = clienteend2_.lgbr_id
    left outer join cadastro.bairro bairro4_ on bairro4_.bair_id =
logradouro3_.bair_id
    left outer join cadastro.municipio municipio5_ on municipio5_.muni_id =
bairro4_.muni_id
where (upper(cliente0_.clie_nmcliente) like 'EDNALDO F%') and
municipio5_.muni_id=960


Considere também a possibilidade de substituir os "left outer join" por
"inner join" (como falado tb), claro se a lógica do sistema permitir... Pois
o custo de outer joins pro banco é alto...

Espero ter ajudado.


Att,


-- 
Charly Frankl
http://javadevilopers.blogspot.com/
charlyfra...@gmail.com
Linux user #391083


2009/7/31 paulo matadr <saddon...@yahoo.com.br>

> Boa tarde euler,
> nao houve mudanca no plano..fui ate 64 de work e nada
>
> ------------------------------
> *De:* Euler Taveira de Oliveira <eu...@timbira.com>
> *Para:* Comunidade PostgreSQL Brasileira <
> pgbr-geral@listas.postgresql.org.br>
> *Enviadas:* Quarta-feira, 29 de Julho de 2009 18:14:19
> *Assunto:* Re: [pgbr-geral] Res: Res: Analise de uso de index entre 8.2 ou
> 8.3
>
> paulo matadr escreveu:
> > Os parametros do servidor aparentemente importantes sao:
> >
> Qual é o valor de work_mem? Você tentou fazer:
>
> SET work_mem to 16MB;
> EXPLAIN ANALYZE SELECT ...;
> SET work_mem to 8MB;
> EXPLAIN ANALYZE SELECT ...;
> SET work_mem to 32MB;
> EXPLAIN ANALYZE SELECT ...;
>
> O plano mudou?
>
> Outra coisa é que você está utilizando LEFT JOIN em todas as junções. Eles
> são
> realmente necessários ou tem algum deles que pode ser um INNER JOIN
> (aqueles
> cuja chave estrangeira não pode ser nula)? Junções externas *não*
> restringem
> tanto o conjunto de dados quanto junções internas e, tendem a ser mais
> custosas.
>
>
> --
>   Euler Taveira de Oliveira
>   http://www.timbira.com/
> _______________________________________________
> pgbr-geral mailing list
> pgbr-geral@listas.postgresql.org.br
> https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
>
> ------------------------------
> Veja quais são os assuntos do momento no Yahoo! + Buscados: Top 
> 10<http://br.rd.yahoo.com/mail/taglines/mail/*http://br.maisbuscados.yahoo.com/>-
> Celebridades<http://br.rd.yahoo.com/mail/taglines/mail/*http://br.maisbuscados.yahoo.com/celebridades/>-
> Música<http://br.rd.yahoo.com/mail/taglines/mail/*http://br.maisbuscados.yahoo.com/m%C3%BAsica/>-
> Esportes<http://br.rd.yahoo.com/mail/taglines/mail/*http://br.maisbuscados.yahoo.com/esportes/>
>
> _______________________________________________
> pgbr-geral mailing list
> pgbr-geral@listas.postgresql.org.br
> https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
>
>
_______________________________________________
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Reply via email to