本文介绍了REFRESH MATERIALIZED VIEW的语法、参数以及示例等内容。
简介
REFRESH MATERIALIZED VIEW
完全替换一个物化视图的内容。你必须是该物化视图的属主才能执行这个命令.旧的内容会被抛弃。如果指定了 WITH DATA
(或者作为默认值),支持查询将被执行以提供新的数据,并且会让物化视图将处于可扫描的状态。如果指定了 WITH NO DATA
,则不会生成新数据并且会让物化视图处于一种不可扫描的状态。
CONCURRENTLY
和WITH NO DATA
不能被一起指定。
语法
REFRESH MATERIALIZED VIEW [ CONCURRENTLY ] name
[ WITH [ NO ] DATA ]
参数
CONCURRENTLY
对物化视图的刷新不阻塞在该物化视图上的并发选择。如果没有这个选项, 一次影响很多行的刷新将使用更少的资源并且更快结束,但是可能会阻塞其他尝试从物化视图中读取的连接。这个选项在只有少量行被影响的情况下可能会更快。
只有当物化视图上有至少一个UNIQUE
索引(只用列名并且包括所有行)时,才允许这个选项。也就是说,它不能是表达式索引或者包括WHERE
子句。
当物化视图还未被填充时,这个选项不能被使用。
即使带有这个选项,对于任意一个物化视图一次也只能运行一个 REFRESH
。
name
要刷新的物化视图的名称(可以被模式限定)。
说明
虽然用于未来的 CLUSTER 操作的默认索引会被保持, REFRESH MATERIALIZED VIEW
不会基于这个属性排序产生的行。如果希望数据在产生时排序,必须在支持查询中使用 ORDER BY
子句。
示例
将使用物化视图order_summary
定义中的查询来替换该物化视图的内容,并且让它处于一种可扫描的状态:
REFRESH MATERIALIZED VIEW order_summary;
将释放与物化视图annual_statistics_basis
相关的存储并且让它变成一种不可扫描的状态:
REFRESH MATERIALIZED VIEW annual_statistics_basis WITH NO DATA;
该文章对您有帮助吗?