[firebase-br] Resultado com INNER JOIN x LEFT JOIN
Jeferson Oliveira
jefersonfoliveira em gmail.com
Qui Jun 22 10:23:22 -03 2006
Marcos,
Ao indicar um join com Left será realiza, para cada valor da tabela à
esquerda, uma pesquisa na tabela que está à direita e, portanto, somente à
tabela à direita precisa ser indexada. O que explica a utilização do índice
TBTIPOMOVIMENTOSAIDA_PK no segundo caso.
Inner e Right join, fazem o oposto: para cada valor da direita é feita uma
pesquisa na tabela à esquerda.
Já o índice TBMOVESTOQUE_DATAPRODUTO só foi utilizado devido ás condições
definidas na claúsula WHERE.
Ese comportamento é geral, e não específico do seu banco de dados.
Abaixo a sentença que utilizei para confirmar essa afirmação:
select Detalhe.RDB$CONSTRAINT_NAME as NomeFK,
idxDetalhe.RDB$FIELD_NAME as CampoDetalhe
from RDB$RELATION_CONSTRAINTS Detalhe
left join RDB$INDEX_SEGMENTS idxDetalhe
on (idxDetalhe.RDB$INDEX_NAME = Detalhe.RDB$INDEX_NAME)
Abraço!
Jeferson Oliveira
Mais detalhes sobre a lista de discussão lista