› Fóruns › Banco de dados Oracle › Desenpenho de consultas › Desenpenho de consultas
Bom, não sei se seria o correto, mas fiz dessa forma:
SELECT lista1.valor as v1, lista2.valor as v2 from lista1, lista2
where
(
lista1.ID_lista = '2170' and lista1.ID_base_lost = '31' and lista1.PERIODO BETWEEN '01/06/12' AND '01/06/12' and
lista2.ID_lista = '2170' and lista2.ID_base_lost = '31' and lista2.PERIODO BETWEEN '01/06/12' AND '01/06/12'
)
Agora a consulta que demorava 35 segundo está sendo realizada com 3 segundos.
A ideia de usar o join funcionaria apenas no caso de filtrar as três tabelas ao mesmo tempo? Vou postar abaixo de forma resumida como está o código do loop, assim se alguém tiver alguma ideia para melhorar ainda mais agradeço…
psBase = conn.prepareCall("select id, descricao from base where subgrupo = '1.0' or subgrupo = '2.0' or subgrupo = '3.0'");
rsBase = psBase.executeQuery();
//loop na tabela base
while(rsBase.next()){
Int idListaAtual = rsBase.getString("id");
//aki dentro executo os dois selects, no caso atual, já substitui os dois select por um só, como informado acima...
psRealizado = conn.prepareCall("SELECT lista1.valor as v1, lista2.valor as v2 from lista1, lista2 where
(
lista1.ID_lista = "+idListaAtual+" and lista1.ID_base_lost = "+id_base_lost+" and lista1.PERIODO BETWEEN '01/06/12' AND '01/06/12' and
lista2.ID_lista = "+idListaAtual+" and lista2.ID_base_lost = "+id_base_lost+" and lista2.PERIODO BETWEEN '01/06/12' AND '01/06/12'
)");
rsRealizado = psRealizado.executeQuery();
//Se acho algo mando para arrais...
if (rsRealizado.next()){
lista1[contArray] = rsRealizado.getFloat("v1");
lista2[contArray] = rsRealizado.getFloat("v2");
}
}