选择 打开 改范围 完整检索页

pgsql.cc 提供对 postgresql.org 官网内容的中文翻译,由 Pigsty 团队维护。

文档 / SQL 命令 / 表与视图

SQL COMMAND · 表与视图

REFRESH MATERIALIZED VIEW

替换物化视图的内容

REFRESH表与视图引入 10(基线)现存至 20 devel0 次语法变更

动词
REFRESH
对象
MATERIALIZED VIEW
引入版本
10(基线)
状态
现存
语法变更次数
0
手册小节数
6

本站手册 · 18官方文档 ↗

版本轨迹

相对 PostgreSQL 17 无变化。

语法铁道图 PostgreSQL 18

沿轨道从左向右阅读,分岔表示选择,绕行表示可选,回环表示重复。方框为参数,点击带下划线的参数可展开子规则。

REFRESH MATERIALIZED VIEW CONCURRENTLY name WITH NO DATA

语法概要

REFRESH MATERIALIZED VIEW [ CONCURRENTLY ] name
    [ WITH [ NO ] DATA ]

PostgreSQL 18 手册 · 查看完整参考页

描述

REFRESH MATERIALIZED VIEW会完全替换物化视图的内容。 要执行此命令,必须拥有该物化视图的MAINTAIN权限。旧 内容会被丢弃。如果指定了WITH DATA(或者默认如 此),则会执行其底层查询以生成新数据,并使物化视图处于可扫描状态。如 果指定了WITH NO DATA,则不会生成新数据,并使物化视 图处于不可扫描状态。

不得同时指定CONCURRENTLYWITH 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 VIEWPostgreSQL的扩展。

另见

语法演化

相邻大版本之间的差异,新的在前。版本号链接到对应快照。

  1. PostgreSQL 14← 13正文更新

    正文更新

同组命令

命令动词对象版本变动最近变更
TABLES & VIEWS表与视图15 条
TRUNCATETRUNCATE
清空一个表或一组表现存
CREATE MATERIALIZED VIEWCREATEMATERIALIZED VIEW 121 次
定义一个新物化视图现存
ALTER MATERIALIZED VIEWALTERMATERIALIZED VIEW 142 次
更改一个物化视图的定义现存
DROP MATERIALIZED VIEWDROPMATERIALIZED VIEW
移除一个物化视图现存
REFRESH MATERIALIZED VIEWREFRESHMATERIALIZED VIEW
替换物化视图的内容现存
CREATE SEQUENCECREATESEQUENCE 141 次
定义一个新的序列发生器现存
ALTER SEQUENCEALTERSEQUENCE 141 次
更改序列发生器的定义现存
DROP SEQUENCEDROPSEQUENCE
移除一个序列现存
CREATE TABLECREATETABLE 206 次
定义一个新表现存
ALTER TABLEALTERTABLE 206 次
更改一个表的定义现存
DROP TABLEDROPTABLE
移除一个表现存
CREATE TABLE ASCREATETABLE AS 192 次
根据查询结果定义一个新表现存
CREATE VIEWCREATEVIEW
定义一个新视图现存
ALTER VIEWALTERVIEW 142 次
更改视图的定义现存
DROP VIEWDROPVIEW
移除一个视图现存