Depende de muchos factores, pero lo más importante:
- complejidad de los cálculos (prefiere hacer cálculos complejos en un servidor de aplicaciones, ya que eso hace escalar; en lugar de un servidor de base de datos, que escala hacia arriba )
- volumen de datos (si necesita acceder/agregar una gran cantidad de datos, hacerlo en el servidor de base de datos ahorrará ancho de banda y disco io si los agregados se pueden realizar dentro de los índices)
- conveniencia (sql no es el mejor lenguaje para trabajos complejos; especialmente no es bueno para trabajos de procedimiento, pero es muy bueno para trabajos basados en conjuntos; sin embargo, pésima gestión de errores)
Como siempre, si haces traer los datos de vuelta al servidor de aplicaciones, minimizar las columnas y filas será una ventaja. Asegurarse de que la consulta esté ajustada y correctamente indexada ayudará en cualquiera de los dos escenarios.
Re su nota:
y luego recorrer los registros
Bucle a través de registros es casi siempre lo incorrecto en sql:se prefiere escribir una operación basada en conjuntos.
Como regla general , prefiero mantener el trabajo de la base de datos al mínimo "almacenar estos datos, obtener estos datos"; sin embargo, siempre hay ejemplos de escenarios en los que una consulta elegante en el servidor puede ahorrar mucho ancho de banda.
Considere también:si esto es computacionalmente costoso, ¿se puede almacenar en caché en algún lugar?
Si desea una precisa "cual es mejor"; codifíquelo en ambos sentidos y compárelo (tenga en cuenta que es probable que un primer borrador de cualquiera de los dos no esté 100% ajustado). Pero tenga en cuenta el uso típico de eso:si, en realidad, se llama 5 veces (por separado) a la vez, simule eso:no compare solo "1 de estos contra 1 de esos".