每次更改下表中的某个表时,是否完全重新计算了PostgreSQL中的视图?
更确切地说,如果我在表votes
上有聚合视图,那么当在投票表中进行任何更改时,是否需要重新计算视图?
如果我希望经常更改votes
表,那么聚合视图的替代方法是什么?我需要简单查询的多对数时间复杂度。
答案 0 :(得分:3)
Postgres中的普通VIEWS(以及我所知道的其他RDBMS)实际上只不过是存储的SELECT语句。它没有将实际信息存储在静态表中 - 这就是物化的VIEW(Postgres目前没有,你必须roll your own)。它在某种意义上“每次重新计算”,因为它不存储计算的数据。
如果要存储复杂的计算,请检查previous link如何进行物化视图。
编辑:如果像OMG Ponies说的那样,你在谈论基础表上的ALTER TABLE - 那么它很简单... Postgres不会让你更改VIEW中使用的列的定义而不删除VIEW第一答案 1 :(得分:0)
您可以使用PostgreSQL的物化视图。
PostgreSQL当然可以实现物化视图。由于PostgreSQL强大的PL / pgSQL语言和功能触发系统,物化视图在某种程度上易于实现。我将研究在PostgreSQL中实现物化视图的几种方法。