DIFERENCA ENTRE DUAS TABELAS NO ACESS

ALVAROVB2009 02/12/2010 17:15:16
#358651
Galera, me pediram para colocar uma nova função em um sistema antigo, onde preciso ver uma diferente entre duas tabelas e estou usando o seguinte comando

SELECT T.CodTit from tbtitulos T where T.CodTit not in ( Select R.CodTit from tbretorno R )

Pois quero retornar o que esta na tabela tbtitulos e não esta na tabela tbretorno, só que tem um grande problema, esta demorando demais para retornar o valor.
Será que alguém pode me ajudar a como diminuir esse tempo?
Ou tem algum outro comando para poder fazer isso?

Banco Acess
Tabela TbTitulos = 47830 registros
Tabela TbRetorno = 25104 registros

TbTitulos - Chave Primária - CodTit
TbRetorno - CodTit - Indexada e permitindo duplicação

Esta demorando mais de 20 min e consulta e não trás nada, rodo esse comando no banco e ele começa a trazer alguma coisa, depois para e da que não esta mais respondendo

Abraço a todos e desde já agradeço
LLAIA 02/12/2010 21:54:17
#358677
Resposta escolhida
Realmente isso no Access é complicado. Em SGBDs pra resolver essa situação usamos EXISTS. Existe algum índice ou PK no campo CodTit nas duas tabelas? Se não, crie nas duas e faça um teste.

Pensando melhor aqui, faz assim primeiro, acho que assim funciona bem melhor:

SELECT T.CodTit, R.CodTit from tbtitulos T LEFT JOIN tbretorno R ON T.CodTit = R.CodTit WHERE R.CodTit IS NULL


Dessa forma só serão retornados registros que não ocorrem junção, ou seja, não existem em tbretorno.
ALVAROVB2009 03/12/2010 08:50:34
#358694
LLAIA bom dia !

LLAIA quero agradecer pelo retorno, e primeiro respondendo a sua pergunta

Sim tem uma PK, na TBTITULOS más infelizmente não resolveu o problema, pois eu sabia que o Access tem esse problema
TbTitulos - Chave Primária - CodTit
TbRetorno - CodTit - Indexada e permitindo duplicação

e Segundo seu comando funcionou perfeito, vlw pela ajuda, a consulta foi rápida e trouxe o que eu estava querendo.

Vlw e abraço
Tópico encerrado , respostas não são mais permitidas