2025年9月25日: PostgreSQL 18 发布!
支持的版本:当前 (18) / 17 / 16 / 15 / 14 / 13
开发版本:devel
不支持的版本:12 / 11 / 10 / 9.6 / 9.5 / 9.4 / 9.3

REFRESH MATERIALIZED VIEW

REFRESH MATERIALIZED VIEW — 替换物化视图的内容

概要

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

描述

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

CONCURRENTLYWITH NO DATA 不能同时指定。

参数

CONCURRENTLY

在不阻止对物化视图进行并发 SELECT 操作的情况下刷新物化视图。没有此选项时,刷新大量行倾向于使用较少资源并更快完成,但可能会阻塞其他尝试从物化视图读取数据的连接。此选项在影响少量行的情况下可能更快。

仅当物化视图上至少有一个 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 的一个扩展。

提交更正

如果您在文档中发现任何不正确之处、与您对特定功能的实际体验不符之处,或需要进一步澄清之处,请使用此表单报告文档问题。