REFRESH MATERIALIZED VIEW - 替换物化视图的内容
REFRESH MATERIALIZED VIEW [ CONCURRENTLY ] name
[ WITH [ NO ] DATA ]
刷新物化视图
完全替换物化视图的内容。要执行此命令,您必须拥有物化视图上的 MAINTAIN
权限。旧内容将被丢弃。如果指定(或默认)WITH DATA
,将执行后台查询以提供新数据,并且物化视图将保留在可扫描状态。如果指定WITH NO DATA
,则不会生成新数据,并且物化视图将保留在不可扫描状态。
不能同时指定 CONCURRENTLY
和 WITH NO DATA
。
CONCURRENTLY
刷新物化视图,而不阻塞物化视图上的并发选择。如果没有此选项,影响大量行的刷新通常会倾向于使用更少的资源且完成更迅速,但可能会阻塞尝试从物化视图中读取的其他连接。在受影响的行较少的情况下,此选项可能更快。
此选项仅在物化视图(仅使用列名且包含所有行)至少有一个UNIQUE
索引时才允许;也就是说,它必须不是一个表达式索引或包含WHERE
子句。
此选项只能在物化视图已经填充时使用。
即使使用此选项,也可能一次只针对任何一个物化视图运行一个刷新
。
名称
要刷新的物化视图的名称(可选的架构限定)。
如果物化视图的定义查询中有ORDER BY
子句,则物化视图的原始内容将以这种方式排序;但刷新物化视图
不保证保留该顺序。
当刷新物化视图
正在运行时,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;
刷新物化视图
是PostgreSQL扩展。