Depende de muitos fatores - mas o mais importante:
- complexidade de cálculos (prefira fazer cálculos complexos em um servidor de aplicativos, pois isso dimensiona; em vez de um servidor db, que aumenta )
- volume de dados (se você precisar acessar/agregar muitos dados, fazê-lo no servidor db economizará largura de banda e disk io se os agregados puderem ser feitos dentro de índices)
- conveniência (sql não é a melhor linguagem para trabalho complexo - especialmente não é boa para trabalho procedural, mas muito boa para trabalho baseado em conjunto; porém, tratamento de erros ruim)
Como sempre, se você fazer traga os dados de volta ao servidor de aplicativos, minimizando as colunas e linhas será uma vantagem. Certificar-se de que a consulta esteja ajustada e indexada adequadamente ajudará em qualquer um dos cenários.
Re sua nota:
e, em seguida, percorrer os registros
Loop por meio de registros é quase sempre a coisa errada a se fazer no sql - é preferível escrever uma operação baseada em conjunto.
Como regra geral , prefiro manter o trabalho do banco de dados no mínimo "armazenar esses dados, buscar esses dados" - no entanto, sempre há exemplos de cenários em que uma consulta elegante no servidor pode economizar muita largura de banda.
Considere também:se isso for computacionalmente caro, pode ser armazenado em cache em algum lugar?
Se você deseja um preciso "qual é melhor"; codifique-o das duas maneiras e compare-o (observando que um primeiro rascunho de qualquer um deles provavelmente não está 100% ajustado). Mas leve em consideração o uso típico para isso:se, na realidade, está sendo chamado 5 vezes (separadamente) ao mesmo tempo, simule isso:não compare apenas um único "1 desses vs 1 daqueles".