Vistas Materializadas y Temporales en SQL

Clase 29 de 36Curso de Bases de Datos con SQL - Deprecado

Contenido del curso

Resumen

Cuando trabajas en procesos ETL que se ejecutan de forma recurrente, consultar la misma información una y otra vez puede volverse tedioso e ineficiente. Existen herramientas dentro de SQL que te permiten almacenar consultas y resultados de forma inteligente, ahorrando tiempo y facilitando el soporte de código complejo. Aquí se explican dos conceptos fundamentales: las vistas temporales y las vistas materializadas.

¿Por qué necesitas vistas temporales en tus procesos ETL?

En ingeniería de datos, los desarrollos dentro de un proceso ETL suelen tomar semanas o incluso más de un mes dependiendo de su dificultad [00:06]. Durante ese tiempo, un ingeniero de datos consulta muchas veces la misma información. Crear una vista, eliminarla, volver a crearla y volver a eliminarla no es práctico ni eficiente.

Para resolver esto existe el concepto de vistas temporales. La sentencia para crearlas es CREATE TEMP VIEW seguida del nombre que desees asignarle [01:00]. El resto del comando es idéntico al de una vista normal: se utiliza la palabra reservada AS y luego la query que deseas almacenar.

  • La vista temporal solo existe mientras estés en sesión, es decir, mientras permanece en memoria [01:18].
  • Al terminar la sesión, el motor de base de datos elimina automáticamente la vista.
  • No queda almacenada de forma permanente como una vista convencional.
  • No podrás visualizarla después de cerrar tu conexión.

Este comportamiento resulta ideal para consultas que necesitas reutilizar durante una jornada de trabajo sin dejar objetos innecesarios en la base de datos.

¿Qué son las vistas materializadas y cómo optimizan el rendimiento?

Existen escenarios donde lo que realmente necesitas es conservar los resultados de una consulta, no solo su definición. Algunas queries son extremadamente extensas e incluyen operaciones matemáticas complejas, aplicaciones de reglas de negocio y múltiples transformaciones [01:46]. Su soporte y mantenimiento se vuelve difícil por la complejidad que implican.

Una vista materializada almacena el resultado de la ejecución de la query interna que has definido. Esto significa que:

  • La consulta se ejecuta una sola vez y los resultados quedan guardados.
  • Si una consulta tarda cuatro o cinco minutos en correr, no necesitas repetir ese tiempo cada vez que requieras los datos [02:10].
  • Se optimiza tanto el rendimiento como los tiempos de ejecución.
  • El trabajo de soporte mejora significativamente al reducir la complejidad operativa.

Para crear una vista materializada se utiliza la palabra reservada MATERIALIZED dentro de la sentencia de creación [02:30].

¿Cómo se diferencian las vistas temporales de las materializadas?

La diferencia principal radica en lo que almacenan y su permanencia:

  • Vista temporal: guarda la definición de la consulta, vive solo en sesión y desaparece al cerrar la conexión.
  • Vista materializada: guarda el resultado de la consulta, persiste más allá de la sesión y permite acceder a los datos sin volver a ejecutar la query.

¿Funcionan igual en todos los motores de base de datos?

No todas las palabras reservadas funcionan de la misma manera en PostgreSQL, MySQL o en otros motores SQL [02:48]. Es importante que pruebes tanto CREATE TEMP VIEW como CREATE MATERIALIZED VIEW en el motor que estés utilizando. Si alguna de estas sentencias no funciona, investiga las particularidades de tu motor, ya que cada sistema gestor tiene sus propias implementaciones y limitaciones.

Comparte en los comentarios qué resultados obtuviste al probar estas sentencias y qué diferencias encontraste entre motores. Es un ejercicio valioso que refuerza la comprensión de cómo cada plataforma maneja estos objetos de base de datos.