Caros Colegas,

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 ?

Query:
Select a.DocNumero as DocNumero,a.DocSerie as DocSerie,a.DataDespac as 
DataDespac,
a.CodPagador as CodPagador,a.Descricao  as Descricao ,
b.Descricao  as NomePaga
>From Frete01 a inner Join Frete02 b On (a.CodPagador = b.CodCliente)
Where a.Datadespac >= '20071101'  And a.Datadespac <= '20071130'


Explain: Bd que funciona
"Nested Loop  (cost=0.00..10033.63 rows=1 width=70)"
"  ->  Seq Scan on frete01 a  (cost=0.00..10029.06 rows=1 width=42)"
"        Filter: ((datadespac >= '2007-11-01'::date) AND (datadespac <= 
'2007-11-30'::date))"
"  ->  Index Scan using frete02_f021 on frete02 b  (cost=0.00..4.56 rows=1 
width=39)"
"        Index Cond: ("outer".codpagador = b.codcliente)"


Explain: Bd que da pau
"Merge Join  (cost=44317.04..49633.90 rows=354263 width=120)"
"  Merge Cond: ("outer".codpagador = "inner".codcliente)"
"  ->  Sort  (cost=21157.60..21159.06 rows=582 width=77)"
"        Sort Key: a.codpagador"
"        ->  Seq Scan on frete01 a  (cost=0.00..21130.88 rows=582 width=77)"
"              Filter: ((datadespac >= '2007-11-01'::date) AND (datadespac 
<= '2007-11-30'::date))"
"  ->  Sort  (cost=23159.44..23463.79 rows=121740 width=54)"
"        Sort Key: b.codcliente"
"        ->  Seq Scan on frete02 b  (cost=0.00..8131.40 rows=121740 
width=54)"

Os 2 databases estaum no mesmo servidor, logo as configurações do servidor é 
o mesmo para os 2 bd´s.

Desde já agradeço a atenção recebida.

T+

Marco Aurélio V. da Silva
Prodata Inf. e Cad. Ltda.
MSN: [EMAIL PROTECTED]
Fone: (33) 3322-3082 

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

Responder a