Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Primeiramente obrigado a todos pela atenção.
Estou com o seguinte problema.
Ambiente: Oracle
Executo essa string:
select codigo,nome from produtos where saldo<>(select sum(case when movimento='E' then quantidade else 0 end)-sum(case when movimento='S' then quantidade else 0 end) as saldo from lancamentos where lancamentos.codigo=produtos.codigo)
Ok... e rapidissimo.
Executo a segunda:
select codigo,nome from produtos where saldo<>(select (sum(entradas)-sum(saidas)) as saldo from saldos where produtos.codpro=saldos.codpro)
Agora vem o problema... quando executo uma string unificando as duas acima demora uma eternidade... pra falar a verdade não sei quanto tempo leva... pois não espero acabar.
String:
select codigo,nome from produtos where
**saldo<>(select sum(case when movimento='E' then quantidade else 0 end)-sum(case when movimento='S' then quantidade else 0 end) as saldo from lancamentos where lancamentos.codigo=produtos.codigo)**
or
**saldo<>(select (sum(entradas)-sum(saidas)) as saldo from saldos where produtos.codpro=saldos.codpro)**
Abraços a todos.
O melhor jeito de saber o que pode estar acontecendo, é analisar o PLANO DE EXECUÇÂO do SELECT que está com problema, poste o Explain Plan para verificarmos os problemas.
Abraços,
Usei o UNION no lugar do OR e funcionou perfeitamente.
Subselect
Sem indice provalmente
Comparando desigualdade
Deve demorar mesmo...
tenta
fazer uma tabela via join para montar seu saldo numa view ou tabela virtual.
comparar por joim com sua tabela de produtos
ajudou ?