vista postgres materializada log drop create 12c 11g sql oracle materialized-views

sql - postgres - Vista Materializada vs. Tablas: ¿Cuáles son las ventajas?



oracle materialized view refresh (9)

Para mí es claro por qué es preferible una vista materializada antes que consultar una tabla base. Lo que no está tan claro es la ventaja sobre simplemente crear otra tabla con los mismos datos que el MV. ¿La única ventaja del MV es solo la facilidad de creación / mantenimiento?

¿No es un MV equivalente a una tabla con un esquema coincidente y un INSERT INTO usando la instrucción MVs SELECT?

Es decir, puedes crear un MV de la siguiente manera

CREATE MATERIALIZED VIEW ... AS SELECT * FROM FOO;

Y puedes crear una tabla equivalente:

CREATE TABLE bar (....); INSERT INTO bar SELECT * FROM FOO;

No quiero decir que la facilidad de creación / mantenimiento no es suficiente, solo quiero asegurarme de que no me falta nada.


  1. La vista materializada se mantendrá sincronizada con las relaciones base de las que depende.

  2. Si la vista materializada es actualizable, cuando modifique la vista materializada, también modificará la relación base de la que depende.


1) Acelerar las operaciones de escritura : dado que los índices se pueden crear en vistas materializadas, la lectura de ellos es muy rápida. Tenga en cuenta que si crea un índice en una tabla que incluye muchas escrituras, la sobrecarga de mantenimiento del índice tiende a ralentizar el proceso de escritura. Para evitar esto, puede crear una vista de materialización y crear índices sobre ellos. Estos índices se pueden mantener en segundo plano y no afectan negativamente a las operaciones de escritura de tablas.

2) Operaciones de lectura a gran velocidad : uniones complejas; los pivotes que tardan años en ejecutarse pueden acelerarse al crear índices en las vistas materializadas. Esto se vuelve muy útil en la mayoría de los escenarios de informes.


Además de las otras respuestas (porque no las he visto), diría que aunque ambas usan espacio, la vista materializada está lógicamente normalizada, mientras que la tabla adicional está lógicamente desnormalizada. Si esto es algo que no es una excepción temporal, deberá recordar actualizar la segunda tabla cada vez que actualice la tabla base.


Además de las ventajas ya mencionadas:

  • reescritura dinámica de consultas (en resumen, el optimizador de bases de datos sabe cómo se crea el MV, por lo que puede reutilizarlo para optimizar otras consultas),
  • actualización opcional, automática, posiblemente incremental,

Me gustaría mencionar:

  • algunas vistas materializadas pueden escribirse, lo que actualiza la tabla de origen (por ejemplo, se pueden escribir uniones con claves primarias, por el contrario si la vista materializada es el resultado de un grupo por el cual no se puede escribir)
  • el servidor de base de datos conserva la consulta que creó los datos y puede volver a ejecutarlo. Si crea una tabla, necesita una herramienta externa (posiblemente solo una secuencia de comandos personalizada) para volver a ejecutar la consulta siempre que el usuario necesite o solicite una actualización. (Trabajo para una empresa que desarrolla una herramienta que hace eso y mucho más).

Básicamente son equivalentes, pero MV tiene varias opciones para refrescar automáticamente los datos, lo que no solo mejora la facilidad de mantenimiento sino también, en algunos casos, la eficiencia, ya que puede rastrear los cambios por filas.


La diferencia entre la tabla y MV es con la tabla, puede hacer operaciones DML que serán vistas por otros usuarios, mientras que los cambios que haga a MV no estarán disponibles para otros hasta que actualice su servidor de base de datos.

MV tiene otra ventaja cuando construyes MV basado en múltiples tablas usando consultas complejas, los usuarios cuando usan MV el rendimiento aumenta drásticamente.


La gran ventaja de una Vista Materializada es la recuperación extremadamente rápida de datos agregados, ya que se precalcula y almacena, a expensas de insertar / actualizar / eliminar. La base de datos mantendrá la Vista Materializada sincronizada con los datos reales, sin necesidad de reinventar la rueda, deje que la base de datos lo haga por usted.


Las vistas materializadas se pueden actualizar: son instantáneas de datos tomados a intervalos regulares.

Su segunda declaración es solo una oferta de una vez: los datos se insertan en la Tabla en ese momento. Los cambios adicionales a los datos originales no se reflejan en la tabla.


Reescritura de consultas dinámicas . Las vistas materializadas definen no solo las relaciones, sino que también le permiten calcular previamente uniones costosas y agregaciones. El optimizador es lo suficientemente inteligente como para usar el MV para obtener datos relevantes incluso si el MV no se usa explícitamente en la consulta (dada la configuración de DB, etc.).

Su pregunta fue etiquetada como Oracle, pero MSSQL también hace trucos similares.