Postgres 物化视图或 CREATE TABLE AS 如果不增量更新?

Posted

技术标签:

【中文标题】Postgres 物化视图或 CREATE TABLE AS 如果不增量更新?【英文标题】:Postgres materialized views or CREATE TABLE AS if not updating incrementally? 【发布时间】:2013-12-13 08:06:06 【问题描述】:

如果我不打算在 Postgres 中实现物化视图的增量更新,那么使用它们比 CREATE TABLE AS 有什么优势吗?根据我的阅读,当您刷新物化视图时,该视图会锁定并且不可读。由于它不可用,它似乎与以在物化视图上运行刷新相同的速率删除和重新创建表具有相同的效果。

【问题讨论】:

我认为你是对的。我看到的唯一优点是“刷新”语句要短得多,您不需要为此重新声明整个查询。取决于您管理 DDL 脚本的方式,这可能是一个优势 @a_horse_with_no_name:你真的应该把它添加为答案——因为它基本上的答案。 :-) 【参考方案1】:

从 PostgreSQL 9.3.2 开始,您也不能使用物化视图数据作为 UPDATE 查询的基础。 因此,如果您需要将此视图用作某些更新的基础,那么您最好使用常规表。

【讨论】:

以上是关于Postgres 物化视图或 CREATE TABLE AS 如果不增量更新?的主要内容,如果未能解决你的问题,请参考以下文章

是否有一个 postgres 命令来列出/删除所有物化视图?

Postgres:更新与物化视图连接的表?错误:视图无法在物化视图中锁定行

在Postgres中的物化视图上创建主键

在 Postgres 的物化视图上创建主键

ActiveRecord 迁移未填充 Postgres 物化视图

Laravel/Eloquent 分页和 groupBy 用于 postgres 物化视图模型