[firebase-br] Resultado com INNER JOIN x LEFT JOIN

Marcos Marcos facundini em hotmail.com
Qui Jun 22 09:52:16 -03 2006


Bom dia a todos,

Alguém consegue explicar a diferença no resultado abaixo:
(Observar os planos utilizados na tabela TBTIPOMOVIMENTOSAIDA).
Minha dúvida é porque usando INNER JOIN foi aplicado o plano NATURAL,
ficando a pesquisa muito mais lenta e usando o LEFT JOIN foi aplicado o 
índice principal
da tabela ficando a pesquisa + rápida.

1º)

SELECT TBMOVESTOQUE.CODPRODUTO, TBMOVESTOQUE.DATAMOVIMENTO
FROM TBMOVESTOQUE
INNER JOIN TBTIPOMOVIMENTOSAIDA
  ON (TBMOVESTOQUE.CODTM = TBTIPOMOVIMENTOSAIDA.COD_TM)
WHERE
  (TBMOVESTOQUE.DATAMOVIMENTO >= '01/01/2005') AND
  (TBMOVESTOQUE.DATAMOVIMENTO <= '01/31/2005') AND
  (TBTIPOMOVIMENTOSAIDA.BAIXAESTOQUE = 1) AND
  (TBTIPOMOVIMENTOSAIDA.FISCAL = 1)

Plan
PLAN JOIN (TBTIPOMOVIMENTOSAIDA NATURAL,TBMOVESTOQUE INDEX 
(TBMOVESTOQUE_DATAPRODUTO))

Adapted Plan
PLAN JOIN (TBTIPOMOVIMENTOSAIDA NATURAL,TBMOVESTOQUE INDEX 
(TBMOVESTOQUE_DATAPRODUTO))



2º)

SELECT TBMOVESTOQUE.CODPRODUTO, TBMOVESTOQUE.DATAMOVIMENTO
FROM TBMOVESTOQUE
LEFT JOIN TBTIPOMOVIMENTOSAIDA
  ON (TBMOVESTOQUE.CODTM = TBTIPOMOVIMENTOSAIDA.COD_TM)
WHERE
  (TBMOVESTOQUE.DATAMOVIMENTO >= '01/01/2005') AND
  (TBMOVESTOQUE.DATAMOVIMENTO <= '01/31/2005') AND
  (TBTIPOMOVIMENTOSAIDA.BAIXAESTOQUE = 1) AND
  (TBTIPOMOVIMENTOSAIDA.FISCAL = 1)

Plan
PLAN JOIN (TBMOVESTOQUE INDEX 
(TBMOVESTOQUE_DATAPRODUTO),TBTIPOMOVIMENTOSAIDA INDEX 
(TBTIPOMOVIMENTOSAIDA_PK))

Adapted Plan
PLAN JOIN (TBMOVESTOQUE INDEX 
(TBMOVESTOQUE_DATAPRODUTO),TBTIPOMOVIMENTOSAIDA INDEX 
(TBTIPOMOVIMENTOSAIDA_PK))


Obrigado,
Marcos.

_________________________________________________________________
Seja um dos primeiros a testar o novo Windows Live Mail Beta- grátis. Acesse 
http://www.ideas.live.com/programpage.aspx?versionId=5d21c51a-b161-4314-9b0e-4911fb2b2e6d





Mais detalhes sobre a lista de discussão lista