Bom dia pessoal,
Trabalho com as 2 versoes do postgres 8.2 e 8.3(em desenvolvimento),percebei
que uma query necessecitava de index, a query abaixo:
select count(distinct cliente0_.clie_id) as col_0_0_ from cadastro.cliente
cliente0_
left outer join cadastro.cliente_tipo clientetip1_ on
cliente0_.cltp_id=clientetip1_.cltp_id
left outer join cadastro.cliente_endereco clienteend2_ on
cliente0_.clie_id=clienteend2_.clie_id
left outer join cadastro.logradouro_bairro logradouro3_ on
clienteend2_.lgbr_id=logradouro3_.lgbr_id
left outer join cadastro.bairro bairro4_ on
logradouro3_.bair_id=bairro4_.bair_id
left outer join cadastro.municipio municipio5_ on
bairro4_.muni_id=municipio5_.muni_id
where
(upper(cliente0_.clie_nmcliente) like 'EDNALDO F%')
and municipio5_.muni_id=960
custo em desenv:
Aggregate (cost=130511.50..130511.51 rows=1 width=4)
e fazendo seqsan --> Seq Scan on cliente cliente0_ (cost=0.00..65513.43
rows=10371 width=8)
solucao no ambiente de desenvolvimento:
CREATE INDEX xix1_cliente
ON cadastro.cliente
USING btree
(upper(clie_nmcliente))
apos isso o custo da mesma foi para:
Aggregate (cost=35.81..35.82 rows=1 width=4)
usando o indice criado .
Em producao com a versao do banco 8.2, foi aplicado a mesma logica:
custo inicial:
Aggregate (cost=63528.48..63528.49 rows=1 width=4)
custo final:
Aggregate (cost=63916.38..63916.39 rows=1 width=4)
o indice nao foi utilizado, as tabelas sao iguais em estrutura e os counts sao
praticamente os mesmos.
count(*) de prod =2109183
count(*) de desenv =2089314
Sera que o postgres 8.2 não suporta este tipo de index?
Att
Paulo
____________________________________________________________________________________
Veja quais são os assuntos do momento no Yahoo! +Buscados
http://br.maisbuscados.yahoo.com_______________________________________________
pgbr-geral mailing list
[email protected]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral