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

Responder a