Las vistas materializadas le permiten almacenar físicamente los resultados de consultas complejas y actualizarlos periódicamente. Por lo tanto, son útiles en los casos en que necesita un acceso rápido a los datos para informes e inteligencia comercial. Aquí se explica cómo crear una vista materializada en PostgreSQL.
Vista de PostgreSQL frente a vista materializada
Las vistas materializadas son similares a las vistas de PostgreSQL que le permiten almacenar consultas SQL para llamarlas más tarde. Sin embargo, la vista de PostgreSQL le permite almacenar solo la consulta SQL y no su resultado. Las vistas materializadas le permiten almacenar el resultado de la consulta físicamente y actualizarlas periódicamente. Como resultado, las vistas materializadas son más rápidas que las vistas de PostgreSQL.
Lectura adicional:cómo obtener la última fila por grupo en PostgreSQL
Cómo crear una vista materializada en PostgreSQL
Puede crear una vista materializada en PostgreSQL usando la declaración CREATE MATERIALIZED VIEW como se muestra a continuación.
CREATE MATERIALIZED VIEW view_name AS query WITH [NO] DATA;
En la declaración anterior, debe mencionar view_name así como la consulta cuyo resultado desea almacenar en la vista materializada.
Finalmente, también puede especificar la opción CON DATOS si desea cargar datos en la vista en el momento de su creación. Si menciona SIN DATOS, la vista se marcará como ilegible y no podrá consultar los datos de la vista hasta que los cargue.
Lectura adicional:función de creación de PostgreSQL
Actualización de la vista materializada de PostgreSQL
Puede cargar datos en la vista materializada usando la instrucción REFRESH MATERIALIZED VIEW como se muestra
REFRESH MATERIALIZED VIEW view_name
También puede usar la declaración anterior para actualizar la vista materializada.
Tenga en cuenta que la declaración REFRESH MATERIALIZED VIEW bloquea los datos de la consulta para que no pueda ejecutar consultas contra ellos. Puedes evitarlo usando la opción CONCURRENTEMENTE
REFRESH MATERIALIZED VIEW CONCURRENTLY view_name
En este caso, PostgreSQL crea una vista temporal, la compara con la original y realiza las inserciones, actualizaciones y eliminaciones necesarias. Como resultado, la opción CONCURRENTEMENTE está disponible solo para vistas materializadas que tienen un índice único.
Para actualizar automáticamente la vista materializada periódicamente, puede ejecutar REFRESH MATERIALIZED VIEW a través de un script automatizado.
Lectura adicional:esquema de creación de PostgreSQL
Eliminar vistas materializadas
Puede eliminar vistas materializadas mediante la declaración DROP MATERIALIZED VIEW.
DROP MATERIALIZED VIEW view_name
Ejemplos de vistas materializadas
Veamos algunos ejemplos de vistas materializadas.
Aquí está la consulta para crear una vista materializada llamada sample_view
postgres=# create materialized view sample_view as select * from sales with no data;
En la consulta anterior, hemos mencionado la opción SIN DATOS, por lo que la vista no tendrá ningún dato y dará un error cuando intentemos consultarla.
postgres=# select * from sample_view; ERROR: materialized view "sample_view" has not been populated HINT: Use the REFRESH MATERIALIZED VIEW command.
Ahora actualizaremos la vista para cargar datos en ella y luego ejecutaremos la consulta anterior en nuestra vista.
postgres=# refresh materialized view sample_view; REFRESH MATERIALIZED VIEW postgres=# select * from sample_view; order_date | sale ------------+------ 2020-04-01 | 210 2020-04-02 | 125 2020-04-03 | 150 2020-04-04 | 230 2020-04-05 | 200 2020-04-10 | 220 2020-04-06 | 250 2020-04-07 | 215 2020-04-08 | 300 2020-04-09 | 250
Como puede ver arriba, cuando ejecutamos nuestra consulta nuevamente, obtenemos el resultado.
Con suerte, ahora puede crear fácilmente una vista materializada para su base de datos.
Ubiq facilita la visualización de datos en minutos y el monitoreo en paneles en tiempo real. ¡Pruébalo hoy!