REFRESH MATERIALIZED VIEW
替换物化视图的内容
英文手册覆盖始于 PostgreSQL 6.4. 来源历史与运行验证各自保留独立版本边界。
当前阅读 PG 18·选择有来源记录的版本
- anchor
- SQL-REFRESHMATERIALIZEDVIEW
- file
- sql-refreshmaterializedview.html
- lang
- en
- name
- REFRESH MATERIALIZED VIEW
- purpose
- replace the contents of a materialized view
- purpose zh
- 未知
- sections same as
- 未知
- slug
- 18
- synopsis html
- REFRESH MATERIALIZED VIEW [ CONCURRENTLY ] <em class="replaceable"><code>name</code></em> [ WITH [ NO ] DATA ]
- synopsis text
- REFRESH MATERIALIZED VIEW [ CONCURRENTLY ] name [ WITH [ NO ] DATA ]
语法
REFRESH MATERIALIZED VIEW [ CONCURRENTLY ] name
[ WITH [ NO ] DATA ]语法图
从左向右阅读;分支表示选择,旁路表示可选,循环表示重复。点击带下划线的参数可打开对应规则。
版本定义 PG 18
REFRESH MATERIALIZED VIEW [ CONCURRENTLY ] name [ WITH [ NO ] DATA ]
描述
REFRESH MATERIALIZED VIEW会完全替换物化视图的内容。要执行此命令,必须拥有该物化视图的MAINTAIN权限。旧内容会被丢弃。如果指定了WITH DATA(或者默认如此),则会执行其底层查询以生成新数据,并使物化视图处于可扫描状态。如果指定了WITH NO DATA,则不会生成新数据,并使物化视图处于不可扫描状态。
不得同时指定CONCURRENTLY和WITH NO DATA。
参数
CONCURRENTLY刷新物化视图时,不会阻塞针对该物化视图的并发查询。如果不使用此选项,一次影响很多行的刷新通常会占用更少的资源并且更快完成,但可能会阻塞其他试图从该物化视图读取的连接。在只影响少量行的情况下,此选项可能更快。
只有当该物化视图上至少有一个仅使用列名且涵盖所有行的
UNIQUE索引时,才允许使用此选项;也就是说,它不能是表达式索引,也不能带有WHERE子句。只有在该物化视图已经填充数据时,才能使用此选项。
即使使用了此选项,对于任意一个物化视图,一次也只能运行一个
REFRESH。name要刷新的物化视图名称(可以带模式限定)。
注解
如果物化视图的定义查询中带有ORDER BY子句,则该物化视图的原始内容会按该顺序排列;但REFRESH MATERIALIZED VIEW并不保证保留这种顺序。
在REFRESH MATERIALIZED VIEW运行期间,search_path会被临时改为pg_catalog, pg_temp。
示例
这个命令会使用物化视图order_summary定义中的查询来替换其内容,并使其处于可扫描状态:
REFRESH MATERIALIZED VIEW order_summary;
这个命令会释放与物化视图annual_statistics_basis相关的存储,并使其处于不可扫描状态:
REFRESH MATERIALIZED VIEW annual_statistics_basis WITH NO DATA;
兼容性
REFRESH MATERIALIZED VIEW是 PostgreSQL的扩展。
另见
CREATE MATERIALIZED VIEW, ALTER MATERIALIZED VIEW, DROP MATERIALIZED VIEW比较版本
来源引用
定义来源
center · PostgreSQL 18 · a709ab85
正文语言: zh-Hans · 1b5ca64c