Boa tarde galera,
estou com uma duvida meio cabreira aqui.
Tenho uma tabela no banco, que possui cerca de 35mil registros.
Quando eu peço pra fazer um select em TODOS os dados dessa tabela
Session session = getSession();
Query query = session.createQuery("from Ocorrencia");
List<Ocorrencia> listaOcorrencias = new ArrayList<Ocorrencia>();
listaOcorrencias = query.list();
session.close();
System.out.println(listaOcorrencias.size());
a aplicaçao demora cerca de 15 segundos pra me retornar esse resultado.
É um tempo bem grande ao meu ver, mas, um problema de cada vez.
Para entender o meu problema, devemos entender o que eu quero.
Tenho uma tabela Demanda, que pode possuir várias Ocorrencias, cada uma.
Sendo assim, eu quero que essa consulta, me traga todas as ultimas Ocorrencias de cada Demanda do banco.
Minha query ficou assim:
Session session = getSession();
Query query = session.createQuery("from Ocorrencia o where o.data in(select max(oc.data) from Ocorrencia oc group by oc.demanda.idDemanda)");
List<Ocorrencia> listaOcorrencias = new ArrayList<Ocorrencia>();
listaOcorrencias = query.list();
session.close();
System.out.println(listaOcorrencias.size());
Quando faço isso, ele nao me retorna resposta alguma, fica carregando eternamente.
Esperei cerca de 5 minutos pela resposta, e ela nao veio.
Fico me perguntando se a consulta travou por algum motivo, ou se ela ainda estava sendo feita…eternamente.
Será que alguem tem alguma dica de como melhorar e concertar isso ai?
Estou no aguardo!