Desempenho de consultas e listagem, e dúvida de como é melhor fazer

Bom dia, estou com a seguinte situação:

Atualmente no nosso sistema web… ele realiza uma consulta de listagem de pedidos da seguinte forma: (todos os testes são feitos localmente)

Vem todos os dados e são listados na página… essa consulta + exibição demora 40 segundos… e vem 3 mb de informação… (no momento não tem nada de paginação, vem 3 mb porque é ajax e é preenchida a página toda)

estou pensando em fazer o seguinte e estou em dúvida:

Buscar todos os dados do banco, guardar a lista na sessão e ir paginando ela… essa consulta + exibição demora 12 segundos e vem 32 kb de informação…
mas para paginar dica praticamente estanteado… mas meu medo é deixar essa lista preenchida em cada sessão… pois é ruim para eliminar ela…

E outra opção… é fazer uma consulta limitada, sempre buscando por exemplo:10 por página…
isto faz demorar 2 segundos para carregar cada página… e não deixa nada na sessão…

estou em dúvida qual destes 2 últimos métodos que citei seriam melhores, ou se alguém tem uma idéia melhor…

Atenciosamente, Clarel

Se você quer fazer cache de dados, evite fazer na sessão.

Se você está usando jsf ou spring ou ejb você pode usar escopos como ApplicationScoped ou Singleton para que vc possa cachear esses dados localmente para todos usuários.

Se a lista é única para cada usuário eu vejo como melhor solução paginar a query na consulta mesmo.