更新时间:2025-08-04 GMT+08:00
REFRESH MATERIALIZED VIEW
注意事项
刷新操作会阻塞基表的DML操作。
语法格式
1 2 |
REFRESH MATERIALIZED VIEW {[schema.]materialized_view_name} [ [DEFAULT] | [ RESTRICT ] | [ CASCADE FORWARD ] | [ CASCADE BACKWARD ] | [ CASCADE ALL ] ] |
参数说明
参数 |
描述 |
取值范围 |
---|---|---|
materialized_view_name |
需要刷新的物化视图的名称。 |
- |
DEFAULT |
采用默认的刷新方式。即刷新单个物化视图,若基表未发生变化,不进行刷新操作。 |
- |
RESTRICT |
采用强制刷新。不关注基表是否变化,一定会执行刷新操作。 |
- |
CASCADE FORWARD |
级联向上刷新。先刷新当前物化视图,再依次刷新依赖此物化视图的嵌套物化视图。刷新方式为默认刷新方式。 |
- |
CASCADE BACKWARD |
级联向下刷新。先刷新当前物化视图所依赖的最底层物化视图,再依次刷新底层物化视图依赖的嵌套物化视图,最后刷新当前物化视图。刷新方式为默认刷新方式。 |
- |
CASCADE ALL |
级联刷新全部。先执行级联向下刷新,然后执行级联向上刷新。 |
- |
示例
刷新物化视图。
1
|
REFRESH MATERIALIZED VIEW mv1; |
级联向下刷新物化视图。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
CREATE TABLE t1(a int,b int); CREATE MATERIALIZED VIEW mv1 AS SELECT * FROM t1 where a > 0; CREATE MATERIALIZED VIEW mv2 AS SELECT * FROM mv1; INSERT INTO t1 values(1,1),(2,2); REFRESH MATERIALIZED VIEW mv2 cascade backward; -- 刷新完mv2, mv1数据也进行了更新 SELECT * FROM mv1 ORDER BY 1,2; a | b ---+--- 1 | 1 2 | 2 (2 rows) SELECT * FROM mv2 ORDER BY 1,2; a | b ---+--- 1 | 1 2 | 2 (2 rows) |