REFRESH MATERIALIZED VIEW

替换物化视图的内容。

概要

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

描述

REFRESH MATERIALIZED VIEW 命令将完全替换物化视图的内容。旧内容将被丢弃。执行此命令需具备物化视图的所有者权限。若指定 WITH DATA(或采用默认值),则执行后端查询以获取新数据,物化视图保持可扫描状态;若指定 WITH NO DATA,则不生成新数据,物化视图保持不可扫描状态。

您不能同时指定 CONCURRENTLY 和 WITH NO DATA。

参数

  • CONCURRENTLY
    • 刷新物化视图时不阻止对该视图的并发选择操作。若不启用此选项,影响大量行的刷新操作通常会消耗更少资源且更快完成,但可能阻塞其他试图读取物化视图的连接。当受影响行数较少时,此选项可能更高效。
    • 此选项仅在物化视图上存在至少一个唯一索引时允许使用,该索引必须仅使用列名且包含所有行;即索引不能基于任何表达式,也不能包含WHERE子句。
    • 当物化视图尚未填充数据时,不可使用此选项。
    • 即使启用此选项,对任何单个物化视图每次也只能执行一次REFRESH操作。
  • name
    • 要刷新物化视图的名称(可选带模式限定)。
  • WITH [ NO ] DATA
    • WITH DATA 是默认选项,表示将执行物化视图查询以提供新数据,并使物化视图保持可扫描状态。若指定 WITH NO DATA,则不生成新数据,物化视图将保持不可扫描状态。

注意

如果在物化视图的定义查询中存在ORDER BY子句,则物化视图的原始内容将按该顺序排列;但REFRESH MATERIALIZED VIEW操作无法保证保留该排序。

示例

此命令使用物化视图定义中的查询替换物化视图 order_summary 的内容,并使其保持可扫描状态。

REFRESH MATERIALIZED VIEW order_summary;

此命令释放与物化视图 annual_statistics_basis 关联的存储空间,并使其处于不可扫描状态。

REFRESH MATERIALIZED VIEW annual_statistics_basis WITH NO DATA;

兼容性

REFRESH MATERIALIZED VIEW 是 SQL 标准的数据库扩展。

另见

ALTER MATERIALIZED VIEW, CREATE MATERIALIZED VIEW, DROP MATERIALIZED VIEW