我有一个PostgreSQL数据库,在那里我使用materialized 视图.

REFRESH MATERIALIZED VIEW product_cat_mview;
REFRESH MATERIALIZED VIEW productsforproject;

我的解决方案是,当用户想要查看更新的数据时,他应该单击网页上的"刷新按钮",但这需要大约50秒(在本地连接上,距离应用程序服务器大约2分钟),并且用户必须等待所有这些时间,这是不好的.

现在,我应该创建一个解决方案,每10分钟自动刷新这些materialized 视图.

第一个问题

REFRESH MATERIALIZED VIEW CONCURRENTLY product_cat_mview;

正确,但第二个

REFRESH MATERIALIZED VIEW CONCURRENTLY productsforproject;

抱怨我需要创建一个唯一的索引.我在谷歌上找到了创建索引、唯一索引等功能,但我还是收到了"创建唯一索引"的信息.

推荐答案

您必须在materialized 视图本身上创建一个唯一的索引.

这看起来像这样:

CREATE UNIQUE INDEX ON productsforproject (id);

id替换为合适的唯一键列或此类列的组合(逗号分隔).

Postgresql相关问答推荐

端口5432失败:致命:数据库xxx&不存在.在PostgreSQL数据库中

执行准备好的语句不返回数据

PostgreSQL 不删除旧的 WAL 档案

AWS RDS Postgres 性能缓慢的数据传输

如何使 Postgres 优化引擎具有确定性

从单选插入到多个表

Docker compose read connection reset by peer error on pipeline

在 PostgreSQL 中提高 GROUP BY ... HAVING COUNT(...) > 1 的性能

无法从在 wsl 2 上运行的服务之一连接到在 wsl 2 上的容器中运行的 postgres 数据库

Postgresql:创建默认表空间的视图和使用?

如何使用 SQLAlchemy 将列默认设置为 PostgreSQL 函数?

Hibernate 将用户模型保存到 Postgres

postgresql中的外键可以被触发器违反

升级到 OSX Mavericks 后修复 postgresql

使用 try/except 与 psycopg2 或with closing?

从 psycopg2 异常中获取错误消息

如何将两个 PostgreSQL 列聚合到一个用括号分隔的数组

Postgres 删除表语法错误

每个数据库提供程序类型允许的最大参数数是多少?

PostgreSQL 无法启动:server.key具有组或世界访问权限