eu posso ta errado mais eu acho ja sei o q acontece
explain analyze select * from TABELA1 T1 left join TABELA2 T2 on T2.EMP = 1
and T2.COD = T1.COD where T1.COD = 11957;
A cada linha da primeira tabela ele varre toda a tabela procurando pela
condicao de join
ou seja usa um indice scan na primeira e um seq scan na segunda
explain analyze select * from TABELA1 T1 left join TABELA2 T2 on T2.EMP =
1
and T2.COD = 11957 where T1.COD = 11957;
na segunda creio que ele usa o index scan nas duas por isso deve ser mais
rapido
post ai o resultado do explain pra gente ai!
----- Original Message -----
From: "marlon david de souza" <[EMAIL PROTECTED]>
To: <[email protected]>
Sent: Wednesday, May 17, 2006 1:01 PM
Subject: [PostgreSQL-Brasil] Consulta Lenta
Boa tarde a todos,
Alguém tem idéia por que a consulta
explain analyze select * from TABELA1 T1 left join TABELA2 T2 on T2.EMP =
1
and T2.COD = T1.COD where T1.COD = 11957;
é feito a leitura dos 34.000 registro que eu tenho na tabela TABELA2,
enquanto que a consulta
explain analyze select * from TABELA1 T1 left join TABELA2 T2 on T2.EMP =
1
and T2.COD = 11957 where T1.COD = 11957;
somente lê um registro (o que é correto)? A única diferença entre as duas
consultas é o testes T2.COD=T1.COD na primeira e T2.COD=11957 na segunda.
Obs:
- Estou usando o Postgres 8.0.4
- Já rodei o ANALYZE nas duas tabelas.
- As duas tabelas somente possuem o índice primário.
Sem mais,
----------------------
Marlon David de Souza
Desenvolvimento
Sysmo Informática Ltda
_______________________________________________
Grupo de Usuários do PostgreSQL no Brasil
http://www.postgresql.org.br
_______________________________________________
Grupo de Usuários do PostgreSQL no Brasil
http://www.postgresql.org.br