On this page
刷新材料视图
刷新材料视图—替换实例化视图的内容
Synopsis
REFRESH MATERIALIZED VIEW [ CONCURRENTLY ] name
[ WITH [ NO ] DATA ]
Description
REFRESH MATERIALIZED VIEW
完全替换实例化视图的内容。要执行此命令,您必须是实例化视图的所有者。旧内容将被丢弃。如果指定了WITH DATA
(或默认值),则执行后备查询以提供新数据,并且实例化视图处于可扫描状态。如果指定WITH NO DATA
,则不会生成新数据,并且实例化视图将处于不可扫描状态。
不能一起指定CONCURRENTLY
和WITH NO DATA
。
Parameters
CONCURRENTLY
- 刷新实例化视图,而不会锁定实例化视图上的并发选择。如果没有此选项,则影响很多行的刷新将倾向于使用较少的资源并更快地完成,但是可能会阻止其他尝试从实例化视图读取的连接。在少数行受到影响的情况下,此选项可能会更快。
仅当实例化视图上至少有一个UNIQUE
索引(仅使用列名并包含所有行)时,才允许使用此选项。也就是说,它不能是表达式索引或包含WHERE
子句。
如果尚未填充实例化视图,则可能无法使用此选项。
即使使用此选项,一次也只能针对一个实例化视图运行一个REFRESH
。
name
- 要刷新的实例化视图的名称(可选,由模式限定)。
Notes
虽然保留了将来的CLUSTER操作的默认索引,但REFRESH MATERIALIZED VIEW
不会基于此属性对生成的行进行排序。如果要在生成时对数据进行排序,则必须在后备查询中使用ORDER BY
子句。
Examples
此命令将使用实例化视图定义中的查询替换名为order_summary
的实例化视图的内容,并将其置于可扫描状态:
REFRESH MATERIALIZED VIEW order_summary;
此命令将释放与实例化视图annual_statistics_basis
关联的存储,并使其处于不可扫描状态:
REFRESH MATERIALIZED VIEW annual_statistics_basis WITH NO DATA;
Compatibility
REFRESH MATERIALIZED VIEW
是 PostgreSQL 扩展。