SQL COMMAND · 表与视图
REFRESH MATERIALIZED VIEW
替换物化视图的内容
REFRESH表与视图引入 10(基线)现存至 20 devel0 次语法变更
- 动词
REFRESH- 对象
MATERIALIZED VIEW- 分组
- 表与视图
- 引入版本
- 10(基线)
- 状态
- 现存
- 语法变更次数
- 0
- 手册小节数
- 6
版本轨迹
相对 PostgreSQL 17 无变化。
语法铁道图 PostgreSQL 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的扩展。
另见
语法演化
相邻大版本之间的差异,新的在前。版本号链接到对应快照。
PostgreSQL 14← 13正文更新
正文更新
同组命令
| 命令 | 动词 | 对象 | 版本变动 | 最近变更 |
|---|---|---|---|---|
TRUNCATE | TRUNCATE | — | — | |
| 清空一个表或一组表 | 现存 | |||
CREATE MATERIALIZED VIEW | CREATE | MATERIALIZED VIEW | 121 次 | |
| 定义一个新物化视图 | 现存 | |||
ALTER MATERIALIZED VIEW | ALTER | MATERIALIZED VIEW | 142 次 | |
| 更改一个物化视图的定义 | 现存 | |||
DROP MATERIALIZED VIEW | DROP | MATERIALIZED VIEW | — | |
| 移除一个物化视图 | 现存 | |||
REFRESH MATERIALIZED VIEW | REFRESH | MATERIALIZED VIEW | — | |
| 替换物化视图的内容 | 现存 | |||
CREATE SEQUENCE | CREATE | SEQUENCE | 141 次 | |
| 定义一个新的序列发生器 | 现存 | |||
ALTER SEQUENCE | ALTER | SEQUENCE | 141 次 | |
| 更改序列发生器的定义 | 现存 | |||
DROP SEQUENCE | DROP | SEQUENCE | — | |
| 移除一个序列 | 现存 | |||
CREATE TABLE | CREATE | TABLE | 206 次 | |
| 定义一个新表 | 现存 | |||
ALTER TABLE | ALTER | TABLE | 206 次 | |
| 更改一个表的定义 | 现存 | |||
DROP TABLE | DROP | TABLE | — | |
| 移除一个表 | 现存 | |||
CREATE TABLE AS | CREATE | TABLE AS | 192 次 | |
| 根据查询结果定义一个新表 | 现存 | |||
CREATE VIEW | CREATE | VIEW | — | |
| 定义一个新视图 | 现存 | |||
ALTER VIEW | ALTER | VIEW | 142 次 | |
| 更改视图的定义 | 现存 | |||
DROP VIEW | DROP | VIEW | — | |
| 移除一个视图 | 现存 | |||