Caros Colegas, So reportando a solução do problema para futuras pesquisas. O meu problema foi resolvido aumentando a variavel de configuração effective_cache_size, estava usando valores muito baixos, depois de varias pesquisas e postagens nesta e outra listas recebi esta dica e repasso.
Desde já agradeço a atenção recebida. Marco Aurélio V. da Silva Prodata Inf. e Cad. Ltda. MSN: [EMAIL PROTECTED] Fone: (33) 3322-3082 ----- Original Message ----- From: "Marco Aurélio V. da Silva" <[EMAIL PROTECTED]> To: "Comunidade PostgreSQL Brasileira" <[email protected]> Sent: Tuesday, December 18, 2007 5:12 PM Subject: [Bulk] Re: [pgbr-geral] [Bulk] Re: [Bulk] Re: Duvida uso de indice em query Complementando mais a informação, devido a pesquisas e testes realizados: Desabilitando o SeqScan (SET ENABLE_SEQSCAN TO OFF), ai a consulta passa a usar o indice correto. Habilitando novamente o seqscan fiz alguns testes e cheguei a 2 querys com resultados distintos de acordo com o limit usado, segue as mesmas e o explain de cada: 1) a com pau explain analyse Select a.CodPagador,b.Descricao >From Frete01 a Left Outer Join Frete02 b On (a.CodPagador = b.CodCliente) limit 9364 "Limit (cost=46619.72..46856.82 rows=9364 width=39) (actual time=3385.710..3506.379 rows=9364 loops=1)" " -> Merge Left Join (cost=46619.72..48113.50 rows=58995 width=39) (actual time=3385.706..3479.509 rows=9364 loops=1)" " Merge Cond: ("outer".codpagador = "inner".codcliente)" " -> Sort (cost=24649.80..24797.29 rows=58995 width=11) (actual time=1287.219..1305.888 rows=9364 loops=1)" " Sort Key: a.codpagador" " -> Seq Scan on frete01 a (cost=0.00..19974.95 rows=58995 width=11) (actual time=11.057..484.380 rows=59161 loops=1)" " -> Sort (cost=21969.91..22274.37 rows=121784 width=39) (actual time=2098.457..2119.401 rows=11976 loops=1)" " Sort Key: b.codcliente" " -> Seq Scan on frete02 b (cost=0.00..8127.84 rows=121784 width=39) (actual time=3.306..384.981 rows=121740 loops=1)" "Total runtime: 3525.731 ms" 2) a que funciona explain analyse Select a.CodPagador,b.Descricao >From Frete01 a Left Outer Join Frete02 b On (a.CodPagador = b.CodCliente) limit 9363 "Limit (cost=0.00..46856.62 rows=9363 width=39) (actual time=11.205..536.761 rows=9363 loops=1)" " -> Nested Loop Left Join (cost=0.00..295237.26 rows=58995 width=39) (actual time=11.201..508.936 rows=9363 loops=1)" " -> Seq Scan on frete01 a (cost=0.00..19974.95 rows=58995 width=11) (actual time=11.057..220.711 rows=9363 loops=1)" " -> Index Scan using frete02_f021 on frete02 b (cost=0.00..4.65 rows=1 width=39) (actual time=0.021..0.024 rows=1 loops=9363)" " Index Cond: ("outer".codpagador = b.codcliente)" "Total runtime: 551.331 ms" logo se eu limitar a query a 9363 registros ele usa o indice se limitar a 9364 usa seq scan e demora pra burro, outro teste se na query com limit em 9363 eu der um order by codcliente ele passa a dar seqscan no join. O que pode ser ? lembrando que já rodei as rotinas de manutenção. (Vacuum Full, Analyze, ReindexDb) Marco Aurélio V. da Silva Prodata Inf. e Cad. Ltda. MSN: [EMAIL PROTECTED] Fone: (33) 3322-3082 ----- Original Message ----- From: "Marco Aurélio V. da Silva" <[EMAIL PROTECTED]> To: "Comunidade PostgreSQL Brasileira" <[email protected]> Sent: Tuesday, December 18, 2007 8:32 AM Subject: [Bulk] Re: [pgbr-geral] [Bulk] Re: Duvida uso de indice em query Só complementando, já rodei as rotinas de manutenção do bd, Vacuum, Analyze, Reindex, e nada. Fico no aguardo de qualquer sugestão. Marco Aurélio V. da Silva Prodata Inf. e Cad. Ltda. MSN: [EMAIL PROTECTED] Fone: (33) 3322-3082 ----- Original Message ----- From: "Euler Taveira de Oliveira" <[EMAIL PROTECTED]> To: "Comunidade PostgreSQL Brasileira" <[email protected]> Sent: Monday, December 17, 2007 3:36 PM Subject: [Bulk] Re: [pgbr-geral] Duvida uso de indice em query Marco Aurélio V. da Silva wrote: > Estou com o seguinte problema, ao executar uma determinada query em 2 db > com > estruturas iguais mais com dados diferentes eu obtenho resultados > totalmente > diferentes com relação ao tempo de execução. Em um vai igual um tiro, em > outro demora muito, o volume de dados é mais ou menos o mesmo. Rodei um > explain pra ver o motivo, e vi que em um database usa o indice na hora de > fazer o relaciomanto entre tabelas, no outro naum. Verifiquei nos 2 db´s e > vi que o indice existe nos 2, mas em apenas um db é um usado. O que fazer > ? > EXPLAIN ANALYZE, por favor. Desconfio que (i) você não executa ANALYZE frequentemente, ou seja, estatísticas desatualizadas (ii) o volume dos dados nos dois sistemas estão fazendo com que algoritmos diferentes sejam escolhidos. -- Euler Taveira de Oliveira http://www.timbira.com/ _______________________________________________ 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 _______________________________________________ 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
