Saltar al contenido principal

Vista materializada SQL: Mejorar el rendimiento de las consultas

Comprender cómo las vistas materializadas mejoran el rendimiento de las consultas en las bases de datos SQL. Aprende las limitaciones y las mejores prácticas de las vistas materializadas en diferentes bases de datos.
Actualizado 9 ene 2025  · 9 min de lectura

Las vistas materializadas son una potente función de las bases de datos SQL que ayudan a optimizar el rendimiento de las consultas almacenando los resultados de una consulta físicamente en el disco, lo que ofrece un rendimiento más rápido de las consultas al reducir el recálculo. Esto las hace especialmente útiles para manejar consultas complejas, que consumen muchos recursos y que implican uniones, agregaciones y grandes conjuntos de datos.

Para empezar, te recomiendo que sigas el curso Introducción a SQL de DataCamp y el de Fundamentos de SQL para aprender los conceptos básicos de SQL y cómo extraer datos mediante consultas. La Hoja de trucos de conceptos básicos de SQL será una guía útil de las funciones SQL más comunes para filtrar y agregar datos.

¿Qué son las Vistas Materializadas SQL?

Las vistas materializadas son un tipo especial de objeto de base de datos que almacena físicamente los resultados de una consulta, en lugar de calcularlos sobre la marcha como las vistas normales. Mientras que una vista SQL normal es una consulta SQL guardada que genera sus resultados dinámicamente cada vez que se accede a ella, una vista materializada precalcula y almacena los datos en una estructura similar a una tabla.

Al almacenar el conjunto de resultados en el disco, las vistas materializadas pueden reducir significativamente la carga de una base de datos, mejorar el rendimiento de las consultas y ayudar a agilizar el procesamiento de operaciones de cálculo intensivo.

Crear una vista materializada en SQL

El proceso de creación de una vista materializada implica utilizar la sintaxis CREATE MATERIALIZED VIEW, que varía ligeramente según las distintas bases de datos SQL. Los siguientes métodos muestran cómo crear vistas materializadas en SQL Server, PostgreSQL y Oracle.

Vista materializada en PostgreSQL

En PostgreSQL, puedes crear una vista materializada utilizando la siguiente sintaxis. Este ejemplo crea una vista materializada llamada sales_summary que agrega la cantidad total y los ingresos de cada producto.

-- Create a materialized view to summarize sales data
CREATE MATERIALIZED VIEW sales_summary AS
SELECT product_id, 
       SUM(quantity) AS total_quantity, 
       SUM(price * quantity) AS total_revenue
FROM sales
GROUP BY product_id;

Vista materializada en SQL Server

En SQL Server, las vistas materializadas se denominan "Vistas indexadas". Las tablas subyacentes deben cumplir requisitos específicos para crear una vista indexada, como activar la opción WITH SCHEMABINDING.

La opción WITH SCHEMABINDING garantiza que el esquema no pueda cambiar mientras exista la vista indexada. Debe crearse un índice agrupado único para que la vista se materialice.

-- Create an indexed view with schema binding to summarize sales data
CREATE VIEW sales_summary
WITH SCHEMABINDING 
AS
SELECT product_id, 
       COUNT_BIG(*) AS record_count,
       SUM(ISNULL(quantity, 0)) AS total_quantity,
       SUM(ISNULL(price, 0) * ISNULL(quantity, 0)) AS total_revenue
FROM sales
GROUP BY product_id;
GO
-- Create a unique clustered index to materialize the view
CREATE UNIQUE CLUSTERED INDEX IX_sales_summary 
ON sales_summary (product_id);
GO

Si quieres aprender más sobre SQL Server, te recomiendo que eches un vistazo a nuestro itinerario de habilidades Fundamentos de SQL Server para familiarizarte con las distintas habilidades de SQL para el análisis de datos.

Vista materializada en Oracle

La sintaxis para crear vistas materializadas en Oracle es similar a la de la base de datos PostgreSQL. También podemos especificar opciones de actualización, como ON DEMAND o ON COMMIT.

-- Create a materialized view to summarize sales data
CREATE MATERIALIZED VIEW sales_summary
BUILD IMMEDIATE
REFRESH FAST ON DEMAND
AS
SELECT product_id, SUM(quantity) AS total_quantity, SUM(price * quantity) AS total_revenue
FROM sales
GROUP BY product_id;

Vistas materializadas en bases de datos distribuidas

Las vistas materializadas también pueden especificar métodos de distribución para mejorar el rendimiento de bases de datos como Azure Synapse o Amazon Redshift, que admiten almacenes de datos distribuidos.

Distribución Hash para Amazon Redshift

La consulta siguiente crea una vista materializada llamada sales_summary que agrega la cantidad total y los ingresos por product_id. Las opciones DISTSTYLE KEY y DISTKEY(product_id) garantizan que los datos se distribuyan entre los nodos en función de product_id, lo que mejora el rendimiento de las consultas que se unen en esta columna.

-- Create a materialized view with key-based distribution for efficient joins
CREATE MATERIALIZED VIEW sales_summary
DISTSTYLE KEY
DISTKEY(product_id)
AS
SELECT product_id, 
       SUM(quantity) AS total_quantity, 
       SUM(price * quantity) AS total_revenue
FROM sales
GROUP BY product_id;

Distribución Round-Robin para Azure Synapse

Esta consulta crea una vista materializada denominada sales_summary que agrega la cantidad total y los ingresos por product_id. La distribución ROUND_ROBIN reparte uniformemente los datos entre los nodos, lo que es útil para escenarios que no dependen mucho de las uniones.

-- Create a materialized view with round-robin distribution for balanced data storage
CREATE MATERIALIZED VIEW sales_summary
WITH (DISTRIBUTION = ROUND_ROBIN)
AS
SELECT product_id, 
       SUM(quantity) AS total_quantity, 
       SUM(price * quantity) AS total_revenue
FROM sales
GROUP BY product_id;

Actualizar una vista materializada en SQL

Los datos de las vistas materializadas pueden refrescarse para mantenerse actualizados con las tablas subyacentes. La elección del método de actualización depende de los requisitos empresariales y de las consideraciones de rendimiento de la base de datos concreta. Veamos los siguientes métodos de actualización de datos de las vistas materializadas.

Actualización manual

En la actualización manual, la vista materializada sólo se actualiza cuando el usuario lo solicita explícitamente. Este enfoque ofrece el mayor control sobre cuándo se actualizan los datos, por lo que es adecuado para escenarios en los que los datos cambian con poca frecuencia, o las actualizaciones se realizan en horas valle.

La siguiente consulta muestra el método de actualización manual en PostgreSQL.

REFRESH MATERIALIZED VIEW sales_summary;

Actualización periódica

La vista materializada se actualiza automáticamente a intervalos especificados durante el periodo de actualización, garantizando que los datos estén actualizados sin intervención del usuario. Este método es útil para aplicaciones sensibles al tiempo, en las que los datos deben ser relativamente actuales.

El siguiente ejemplo muestra cómo incluir actualizaciones periódicas en Oracle definiendo programas de actualización directamente en la sentencia CREATE MATERIALIZED VIEW. El tiempo de actualización se ajusta a intervalos de una hora.

-- Create a materialized view to aggregate sales data
-- Set to refresh completely every hour
CREATE MATERIALIZED VIEW sales_summary
REFRESH COMPLETE START WITH (SYSDATE) NEXT (SYSDATE + 1/24)
AS
SELECT product_id, 
       SUM(quantity) AS total_quantity, 
       SUM(price * quantity) AS total_revenue
FROM sales
GROUP BY product_id;

Actualización bajo demanda

La actualización bajo demanda se produce siempre que cambian los datos subyacentes, normalmente a través de un mecanismo de activación. Esto garantiza que la vista materializada contenga siempre los datos actualizados. Por ejemplo, en PostgreSQL, se pueden configurar disparadores para actualizar la vista cuando se produzcan cambios en la tabla subyacente.

Actualizaciones completas frente a incrementales

Puedes actualizar los datos de forma completa o incremental en las vistas materializadas. La tabla siguiente resume los dos métodos y los casos de uso.

Tipo de actualización Descripción Ventajas Inconvenientes
Actualización completa Recarga todo el conjunto de datos, sustituyendo todos los datos existentes en la vista - Fácil de implementar
- Reconstruye toda la vista
- Consumo intensivo de recursos para grandes conjuntos de datos
- Tiempos de actualización más largos
Actualización incremental Actualiza sólo las partes modificadas de la vista - Más eficaz, ya que sólo procesa los datos modificados
- Adecuado para grandes conjuntos de datos con cambios frecuentes
- Requiere configuración adicional (por ejemplo, registros para seguir los cambios)
- No siempre es compatible con todas las consultas

Buenas prácticas para las vistas materializadas

Al utilizar vistas materializadas, es importante tener en cuenta las siguientes prácticas para un uso óptimo.

  • Elegir las consultas adecuadas para materializar: Materializa consultas complejas que consumen muchos recursos, como uniones, agregaciones y subconsultas. Estas consultas se beneficiarían de resultados precalculados que reducirían la carga de la base de datos.
  • Equilibrar la frescura de los datos y el rendimiento: Según tu caso de uso, elige la estrategia de actualización adecuada, como los métodos de actualización manual, periódica o bajo demanda. Utiliza la actualización incremental para reducir la carga computacional y controla la frecuencia de cambio de datos para decidir los intervalos de actualización.
  • Uso de vistas materializadas para optimizar las cargas de trabajo con muchas consultas: Aprovecha las vistas materializadas para informes de BI y cuadros de mando en los que es esencial un tiempo de respuesta rápido. También puedes indexar las columnas utilizadas en las vistas materializadas para filtrar y ordenar más rápidamente.

Vistas materializadas en diferentes sistemas de bases de datos

Como has visto, los distintos sistemas de bases de datos ofrecen soporte variable para las vistas materializadas. La tabla siguiente resume las características únicas y las limitaciones de las vistas materializadas en estas bases de datos.

Sistema de base de datos Métodos de actualización Actualización incremental Actualización automática Características especiales/Limitaciones
PostgreSQL Manual (REFRESCAR VISTA MATERIALIZADA) No No Carece de actualización incremental nativa. Es necesario programar manualmente.
Servidor SQL Automático (Vistas indexadas) Sí (Sincronización automática)

Requiere WITH SCHEMABINDING. Soporte de consulta limitado.

Oracle Manual, Comprometido, Programado Sí (Actualización rápida) Admite actualización rápida, partición y paralelismo. Requiere ver registros.
Amazon Redshift Manual, Programado Admite datos distribuidos con distribución hash o round-robin.
MySQL No se admite de forma nativa No No Soluciones necesarias (por ejemplo, tablas temporales, herramientas de terceros).
Sinapsis Azure Manual, Programado Permite diferentes estrategias de distribución para la optimización.

Si utilizas SQL Server como tu base de datos preferida, te recomiendo que sigas el curso Introducción a SQL Server de DataCamp para dominar los fundamentos de Microsoft SQL Server para el análisis de datos. Además, consulta nuestro itinerario profesional de Desarrollador de SQL Server para saber cómo optimizar las consultas y solucionar problemas en SQL Server.

Aspectos adicionales a tener en cuenta

Aunque las vistas materializadas SQL son útiles para optimizar las consultas, también presentan algunos retos y limitaciones. A continuación se exponen los problemas habituales de las vistas materializadas y cómo solucionarlos.

  • Almacenamiento superior: Las vistas materializadas almacenan los resultados de las consultas físicamente en disco, lo que aumenta los requisitos de almacenamiento. Para evitar consumir espacio de almacenamiento innecesario, sólo materializa vistas para consultas que consuman muchos recursos y particiona las vistas materializadas para conjuntos de datos grandes.
  • Actualizar costes y actualizar gastos generales: Mantener sincronizadas las vistas materializadas con las tablas subyacentes puede consumir muchos recursos, especialmente en el caso de las vistas que requieren actualizaciones frecuentes o implican cálculos complejos. Para evitar la sobrecarga de actualización, utiliza la actualización incremental cuando sea compatible o establece los intervalos de actualización adecuados cuando el uso de la base de datos sea menor.
  • Coherencia y sincronización de datos: Las vistas materializadas pueden quedar obsoletas si los datos subyacentes cambian con frecuencia, lo que provoca problemas de datos obsoletos. Para evitar este problema, selecciona la estrategia de actualización adecuada y controla los cambios en los datos para ajustar la estrategia de actualización según sea necesario.
  • Gastos generales de mantenimiento: Las vistas materializadas requieren un mantenimiento continuo, como establecer calendarios de actualización adecuados, supervisar el uso del almacenamiento y hacer un seguimiento de las dependencias de las tablas subyacentes. Para superar este reto, utiliza siempre programas de actualización automatizados, controla el rendimiento del sistema y configura alertas para las actualizaciones fallidas.

Conclusión

Las vistas materializadas son útiles en las bases de datos SQL para optimizar el rendimiento de las consultas. Almacenan los resultados de la consulta físicamente en el disco, ofreciendo un rendimiento más rápido de la consulta al reducir el recálculo. Esta característica hace que las vistas materializadas sean útiles para manejar consultas complejas, que consumen muchos recursos y que implican uniones, agregaciones y grandes conjuntos de datos. Comprender cómo implementar vistas materializadas en distintas bases de datos te ayudará a mejorar tus habilidades de consulta y optimización de bases de datos.

Si quieres mejorar tus conocimientos de SQL, te recomiendo que pruebes el itinerario profesional de Analista de Datos Asociado en SQL de DataCamp para convertirte en un analista de datos competente. El curso de Informes en SQL también te ayudará a dominar la creación de informes y cuadros de mando complejos para una presentación eficaz de los datos. Por último, deberías obtener la Certificación de Asociado SQL para demostrar tu dominio en el uso de SQL para resolver problemas empresariales y destacar entre otros profesionales.

Certifícate en SQL

Demuestra que tus conocimientos de SQL están preparados para el trabajo con una certificación.
Impulsar mi carrera

Allan Ouko's photo
Author
Allan Ouko
LinkedIn
Creo artículos que simplifican la ciencia de los datos y la analítica, haciéndolos fáciles de entender y accesibles.

Preguntas frecuentes

¿Qué es una vista materializada en SQL?

Una vista materializada es un objeto de la base de datos que almacena físicamente el resultado de una consulta, optimizando el rendimiento al evitar el recálculo.

¿En qué se diferencia una vista materializada de una vista normal?

A diferencia de las vistas normales, que recuperan datos dinámicamente en cada acceso, las vistas materializadas almacenan los datos como tablas físicas, lo que permite una ejecución más rápida de las consultas.

¿Cuál es la diferencia entre actualización completa e incremental?

Una actualización completa recalcula toda la vista, mientras que una actualización incremental sólo actualiza los datos modificados, mejorando la eficacia.

¿Qué bases de datos admiten vistas materializadas?

PostgreSQL, SQL Server (vistas indexadas), Oracle, Amazon Redshift y Azure Synapse Analytics admiten vistas materializadas, cada uno con características y limitaciones diferentes, mientras que MySQL carece de soporte nativo.

¿Las vistas materializadas consumen almacenamiento adicional?

Sí, puesto que almacenan datos físicamente, las vistas materializadas aumentan los requisitos de almacenamiento.

Temas

Aprende SQL con DataCamp

curso

Intermediate SQL

4 hr
299.5K
Accompanied at every step with hands-on practice queries, this course teaches you everything you need to know to analyze data using your own SQL code today!
Ver detallesRight Arrow
Comienza el curso
Ver másRight Arrow
Relacionado

blog

Las 80 mejores preguntas y respuestas de entrevistas SQL para principiantes y profesionales intermedios

Este artículo ofrece una visión completa de 80 preguntas y respuestas esenciales sobre SQL para los que buscan trabajo, los directores de RR. HH. y los reclutadores, y abarca tanto temas generales como preguntas técnicas.
Elena Kosourova's photo

Elena Kosourova

12 min

blog

11 técnicas de visualización de datos para cada caso de uso con ejemplos

Descubra los análisis, técnicas y herramientas más populares para dominar el arte de la visualización de datos.
Javier Canales Luna's photo

Javier Canales Luna

12 min

tutorial

Ejemplos y tutoriales de consultas SQL

Si quiere iniciarse en SQL, nosotros le ayudamos. En este tutorial de SQL, le presentaremos las consultas SQL, una potente herramienta que nos permite trabajar con los datos almacenados en una base de datos. Verá cómo escribir consultas SQL, aprenderá sobre
Sejal Jaiswal's photo

Sejal Jaiswal

21 min

tutorial

Cómo utilizar un alias SQL para simplificar tus consultas

Explora cómo el uso de un alias SQL simplifica tanto los nombres de las columnas como los de las tablas. Aprende por qué utilizar un alias SQL es clave para mejorar la legibilidad y gestionar uniones complejas.
Allan Ouko's photo

Allan Ouko

9 min

tutorial

Creación y personalización de tablas dinámicas en Power BI

Aprende a crear tablas dinámicas personalizables en Power BI con formato condicional avanzado y algunos consejos de optimización.
Joleen Bothma's photo

Joleen Bothma

9 min

tutorial

Introducción a los disparadores SQL: Guía para desarrolladores

Aprende a utilizar los disparadores SQL para automatizar tareas, mantener la integridad de los datos y mejorar el rendimiento de la base de datos. Prueba ejemplos prácticos como los comandos CREATE, ALTER y DROP en MySQL y Oracle.
Oluseye Jeremiah's photo

Oluseye Jeremiah

13 min

Ver másVer más