Select vs forEach

Desculpe se a pergunta é idiota, mas alguém sabe me dizer qual é o mais rápido? ou quando um é mais rápido que o outro?

1 - Filtrando pela Query no banco de dados:

SELECT p FROM Pessoas WHERE p.idade > 15;

2 - Filtrando pela lista:

List<Pessoa> lista = PessoaDAO.getLista();
List<Pessoa> listaFiltrada = new ArrayList<>();
for (Pessoa p : lista){
   if (p.idade > 15){
      listaFiltrada.add(p);
   }
}
1 curtida

O dado vindo do banco é mais rápido!

Porque: se você trouxer todos os dados para depois comparar é um esforço desnecessário e o desempenho só tende a aumentar e piorar! porque os registro aumentam! e no filtro da SQL só traz o que precisa.