Fórum como melhorar esta query ? #328215

29/08/2006

0

tenho duas tabelas: ENTRADA e PROCESSADOS,
preciso de todos os registros que existam na tabela: ENTRADA e não exintam na tabela: PROCESSADOS.

atualmente estou fazendo assim:
select * from ENTRADA E
where E.BANCO not in (select P.BANCO from PROCESSADOS P) or
          E.AGENCIA not in (select P.AGENCIA from PROCESSADOS P) or         
          E.CONTA not in (select P.CONTA from PROCESSADOS P) or           
          E.CHEQUE not in (select P.CHEQUE from PROCESSADOS P) or          
          E.VALOR not in (select P.VALOR from PROCESSADOS P)


assim até funciona com tabelas de poucos registros, mais quando as tabelas são grandes(o que acontece em 70¬ dos casos) demora muito.

preciso de uma ajuda porque sei que uma consulta em duas tabelas grandes usando muitos subSelects não é muito aconselhavel e não consegui encontrar uma outra alternativa.

desde já agradeço !!!


Fabiano Góes

Fabiano Góes

Responder

Posts

29/08/2006

Motta

tente com outter join, em geral é mais rápido

exemplo

 
SELECT *
FROM    USUARIO , POST
WHERE  USUARIO.CODUSU = POST.COD_USU (+)
AND      POST.COD_USU IS NULL


(+) INDICA OUTTER JOIN NO ORACLE - FAÇA A ADAPTAÇÃO SE NECESSÁRIO


Responder

Gostei + 0

30/08/2006

Night_man

tenta assim

Select *
From ENTRADA
Where
Not Exists (Select 1
From PROCESSADOS
Where PROCESSADOS.BANCO = ENTRADA.BANCO And
PROCESSADOS.AGENCIA = ENTRADA.AGENCIA And
PROCESSADOS.CONTA = ENTRADA.CONTA And
PROCESSADOS.CHEQUE = ENTRADA.CHEQUE And
PROCESSADOS.VALOR = ENTRADA.VALOR)


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar