sql >> Base de Datos >  >> RDS >> PostgreSQL

¿Cuáles son los pros y los contras de realizar cálculos en sql vs. en su aplicación?

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".