更新时间:2025-10-11 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) |

