En este artículo ya habíamos visto lo que son las columnas computadas y para que sirven.

https://firebird21.wordpress.com/2013/06/23/columnas-computadas/

Ahora la pregunta es: ¿vale la pena usarlas?

La respuesta es un rotundo sí y las razones son las siguientes:

  1. Las columnas computadas (casi) no ocupan espacio en la Base de Datos
  2. En tus aplicaciones escribes menos
  3. En tus aplicaciones siempre obtendrás el mismo valor
  4. Si necesitas cambiar la fórmula, lo haces en un solo lugar

1. Las columnas computadas (casi) no ocupan espacio en la Base de Datos

¿Por qué? porque solamente se guarda la definición de la columna computada, no sus valores. Por ejemplo, si tu columna computada realiza alguna operación matemática entonces podrá ser de tipo BIGINT y ocupará 8 bytes. Nada más. Si la tabla tiene 1.000.000 de filas no se usarán 8.000.000 de bytes sino solamente 8 bytes, los de la definición.

Si quieres tener una columna para guardar en ella el total de la venta de un producto (cantidad * precio) y la defines como una columna normal entonces estarás haciendo dos cosas mal: primero, tu tabla no estará normalizada porque estarás guardando un valor que puede ser calculado y segundo, estarás desperdiciando espacio en el disco duro. En cambio, si la defines como columna computada la tabla continuará normalizada y además no usarás espacio del disco duro.

 2. En tus aplicaciones escribes menos

Si a tu columna computada la llamas, por ejemplo, TOTAL_VENTAS, entonces en tus stored procedures, en tus triggers, y en tu lenguaje de programación solamente necesitarás escribir TOTAL_VENTAS, no tendrás que estar multiplicando CANTIDAD * PRECIO en cada uno de esos lugares, así que ahorrarás escritura. Cuanto más larga sea la fórmula mayor cantidad de caracteres serán los que te ahorrarás de escribir.

3. En tus aplicaciones siempre obtendrás el mismo valor

Como siempre te estarás refiriendo a una sola columna (por ejemplo, llamada TOTAL_VENTAS) entonces en todos tus stored procedures, tus triggers, y en tu lenguaje de programación siempre obtendrás el mismo valor. Si no usas una columna computada podrías equivocarte y en lugar de escribir CANTIDAD * PRECIO escribir CANTIDAD + PRECIO y por supuesto el resultado estará equivocado. Es cierto que no es probable que te equivoques con una fórmula tan sencilla pero te podría ocurrir si estás muy apurado. Y aún más si la fórmula es complicada. Pero si usas columnas computadas jamás tendrás ese problema porque hay una sola fórmula que se encuentra en un solo lugar, así que es 100% seguro de que siempre obtendrás el mismo valor. Si la fórmula es correcta en todos los lugares obtendrás el valor correcto, y si la fórmula es incorrecta en todos los lugares obtendrás un valor incorrecto, pero siempre será el mismo y eso te ayudará si necesitas cambiar la fórmula.

4. Si necesitas cambiar la fórmula, lo haces en un solo lugar

Supongamos que el resultado de CANTIDAD * VENTAS lo necesitas mostrar en 40 lugares distintos. Y después te dicen que hay que multiplicar a ese resultado por 1.1, para aumentarlo en un 10 %. Si no usas columnas computadas entonces tendrás que hacer 40 cambios (y quizás ni te acuerdes que son 40 y cambies solamente en 28, a pesar de que deberías haber cambiado en 40).

Usando columnas computadas no tendrás ese problema, ya que el cambio lo haces en un solo lugar (en la columna definida como COMPUTED BY) y automáticamente ya el nuevo valor estará disponible en los 40 lugares distintos.

Conclusión:

Usar columnas computadas es altamente recomendable porque ahorramos tiempo y ganamos en confianza y en seguridad. Escribimos menos y además si alguna vez necesitamos cambiar la fórmula lo hacemos en un solo lugar.

Artículos relacionados:

Columnas computadas

Algunos ejemplos de uso de las columnas computadas

Un truco para encontrar valores que pueden estar en varias columnas

Usando un SELECT en una columna computada

Indexando una columna computada

El índice del blog Firebird21

El foro del blog Firebird21