Gab*_*lla 10 postgresql materialized-view
我正在查看 PostgreSQL 文档,其中:
REFRESH MATERIALIZED VIEW 完全取代了物化视图的内容。旧内容被丢弃。
但是,从 9.5 开始,我相信有一种方法可以更新 MV,而无需重新生成所有数据。
Eva*_*oll 13
没有INCREMENTAL
,很简单..来自文档
REFRESH MATERIALIZED VIEW [ CONCURRENTLY ] name
[ WITH [ NO ] DATA ]
Run Code Online (Sandbox Code Playgroud)
也许您将其与CONCURRENTLY
并发(锁定)而不是最小化更新混淆了。
刷新物化视图而不锁定物化视图上的并发选择。如果没有此选项,影响大量行的刷新将倾向于使用更少的资源并更快地完成,但可能会阻止试图从物化视图读取的其他连接。在受影响的行数较少的情况下,此选项可能会更快。
如果您需要增量刷新,请使用表来存储结果并将其与源连接,仅插入以下行NOT EXISTS
,
INSERT INTO materialized_resultset
SELECT foo,bar,baz
FROM src
WHERE NOT EXISTS (
SELECT 1
FROM materialized_resultset AS mr
WHERE src.foo = mr.foo
);
Run Code Online (Sandbox Code Playgroud)
或使用较新的ON CONFLICT UPDATE
或ON CONFLICT DO NOTHING
在INSERT
.
归档时间: |
|
查看次数: |
9044 次 |
最近记录: |