【发布时间】:2019-09-15 08:06:37
【问题描述】:
我是使用 Postgres 的新手,我有一个关于物化视图的问题。我目前正在使用 Postgres 9.6.0 和 PGAdmin 4。
我有一个由多个连接组成的查询,当它在 PGAdmin 中执行时,大约需要 13 秒。考虑到设置了正确的索引,这是真的。
下一种方法是使用物化视图。通过使用物化视图并设置适当的索引,我假设运行查询会快得多,因为数据将被缓存/临时存储。 但是运行查询后,看起来仍然需要 13 秒.....
除非我对物化视图的理解不正确,否则有人可以解释为什么执行物化视图会花费与运行查询一样长的时间。可能是 PGAdmin 导致了这个问题吗?或者 Postgres 中是否有需要设置的设置,以便数据在物化视图中持久化?
感谢任何建议。谢谢。
【问题讨论】:
-
您确定创建的是物化视图 (CREATE MATERIALIZED VIEW...) 而不仅仅是常规视图 (CREATE VIEW...)?刷新物化视图大约需要 13 秒,但刷新后,选择应该更快。
-
您确实更改了查询以使用 MView,对吗?如果有一个碰巧有相同查询的 mview,Postgres(与 Oracle 不同)不会神奇地重写查询。
-
嗨@Jeremy,是的,我确实使用了 CREATE MATERIALIZED VIEW mv_view AS
语句。有趣的是,针对这个视图运行 SQL 语句并没有帮助 -
如果查询很慢,请总是至少包括查询本身和
EXPLAIN (ANALYZE, BUFFERS) <query>的输出。
标签: postgresql postgresql-9.6 materialized-views