CREATE MATERIALIZED VIEW
功能描述
物化视图和表之间的主要区别时物化视图不能直接被更新,并且用于创建视图的查询的存储方式和视图查询的存储方式完全相同,因此要为物化视图生出成新鲜的数据需要使用REFRESH MATERIALIZED VIEW。
注意事项
全量物化视图、增量物化视图不可以在临时表或全局临时表上创建
创建全量物化视图和增量物化视图后,基表中的绝大多数DDL操作不再支持
不支持对全量物化视图、增量物化视图进行IUD操作
全量物化视图创或增量物化视图建后,当基表数据发生变化时,需要使用刷新(REFRESH)命令保持物化视图与基表同步。
不支持更改物化视图结构
全量刷新既可以对全量物化视图执行,也可以对增量物化视图执行
刷新物化视图需要当前用户拥有基表的SELECT权限
增量刷新仅支持增量物化视图
语法格式
创建全量物化视图:
CREATE INCREMENTAL MATERIALIZED VIEW mv_name
[ ( column_name [ , ... ] ) ]
[ WITH ( { storage_parameter = value } [ , ... ] ) ]
[ TABLESPACE tablespace_name ]
AS query;
创建增量物化视图:
CREATE INCREMENTAL MATERIALIZED VIEW mv_name
[ ( column_name [ , ... ] ) ]
[ TABLESPACE tablespace_name ]
AS query;
修改物化视图:
ALTER MATERIALIZED VIEW [ IF EXISTS ] name
action [ , ... ]
ALTER MATERIALIZED VIEW [ IF EXISTS ] name
RENAME [ COLUMN ] column_name TO new_column_name
ALTER MATERIALIZED VIEW [ IF EXISTS ] name
RENAME TO new_name
ALTER MATERIALIZED VIEW [ IF EXISTS ] mv_name
OWNER TO new_owner
删除物化视图:
DROP MATERIALIZED VIEW [ IF EXISTS ] name [ , ... ] [ CASCADE | RESTRICT ]
全量刷新物化视图:
REFRESH MATERIALIZED VIEW mv_name;
增量刷新物化视图:
REFRESH INCREMENTAL MATERIALIZED VIEW mv_name;
参数说明
view_name
要创建的视图名称。可以用模式修饰。
取值范围:字符串,符合标识符命名规范。
query
为视图提供行和列的SELECT或VALUES语句。
示例
创建表:
create table student(
student_no int4 primary key,
student_name varchar(30),
age int2 );
insert into student values(1,'xiaoming',12);
insert into student values(2,'xiaohong',11);
创建全量物化视图:
CREATE MATERIALIZED VIEW mv_student AS SELECT * FROM stundent;
创建增量物化视图:
CREATE INCREMENTAL MATERIALIZED VIEW mv_student AS SELECT * FROM student;
修改物化视图:
ALTER MATERIALIZED VIEW mv_student RENAME TO mv_student1;
删除物化视图:
DROP MATERIALIZED VIEW mv_student;
全量刷新物化视图:
REFRESH MATERIALIZED VIEW mv_student;
增量刷新物化视图:
REFRESH INCREMENTAL MATERIALIZED VIEW mv_student;