Por favor ingresa o regístrese. Diciembre 13, 2018, 08:40:57 am

Autor Tema: Vistas Materializadas - Guardar Resumenes Principales  (Leído 3870 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado admin

  • Administrator
  • Newbie
  • *****
  • Mensajes: 18
  • Karma: +0/-0
    • Ver Perfil
Vistas Materializadas - Guardar Resumenes Principales
« : Septiembre 18, 2013, 12:16:58 pm »
Vistas Materializadas

Tener una Vista Materializada en el Sistema es algo excelente puesto que permite guardar datos pre processados o calculados. En realidad una vista materializada es un objeto que guarda el resultado de una query.


Aquí un ejemplo:
?
1   test=# CREATE TABLE t_test AS SELECT * FROM generate_series(1, 10) AS x;
2
3   SELECT 10
 

Podemos transformar esto en una brillante vista materializada guardando el resultado de la consulta.
?
1    test=# CREATE MATERIALIZED VIEW mat_test AS SELECT sum(x) FROM t_test;
2
3   SELECT 1   
 

La vista materializada puede ser ahora accesada dentro de la base PostgreSQL de la forma en que accedes a cualquier table:
?
1   test=# SELECT * FROM mat_test;
2
3   sum
4
5   -----
6
7   55
8
9   (1 row)

Mantenga una cosa en mente: Una vista materializada es solamente de lectura, actualmente no existe una forma de agregar un registro a la vista. Caso intentes agregar un registro PostgreSQL emitirá un mensaje de error parecido a este:
?
1   test=# INSERT INTO mat_test VALUES (10);
2
3   ERROR: cannot change materialized view "mat_test"
 

Si puedes modificar la tabla a la cual se refiere la vista pero la vista se mantendrá con los datos del la primera query:
?
1   test=# INSERT INTO t_test VALUES (100);
2
3   INSERT 0 1
4
5   test=# SELECT * FROM mat_test;
6
7   sum
8
9  -----
10
11  55
12
13   (1 row)
 
Para asegurar que los datos de la vista están actualizados debes realizar el siguiente comando REFRESH:
?
1   test=# \h REFRESH
2
3   Command: REFRESH MATERIALIZED VIEW
4
5   Description: replace the contents of a materialized view
6
7   Syntax:
8
9   REFRESH MATERIALIZED VIEW name
10
11   [ WITH [ NO ] DATA ]
12
13   test=# REFRESH MATERIALIZED VIEW mat_test WITH DATA;
14
15   REFRESH MATERIALIZED VIEW
16
17   
 
Realizando el REFRESH PostgreSQL ejecutará la consulta una vez mas y actualizara el contanido de la vista:

1   test=# SELECT * FROM mat_test;
2
3   sum
4
5  -----
6
7  155
8
9   (1 row)

Vistas Materializadas: Una manera confortable de guardar datos pre-aggregados o calculados.
« Última Modificación: Septiembre 18, 2013, 12:20:07 pm por admin »