On Fri, 14 Sep 2018 at 16:26, Jeremy Finzel <finz...@gmail.com> wrote:

>
>> Could you apply something similar using triggers?
>> One question would be how PG would identify changes to existing rows -
>> using the replication facilities to essentially replicate into the view?
>> This would be quite tricky I reckon. Otherwise a change to the underlying
>> table may not propagate correctly to the MV.
>>
>
> That's not what I had in mind.  I only mean when REFRESH MATERIALIZED VIEW
> is run, it gathers the results of the view in memory, then instead of
> essentially "wiping and reloading" the table, it would only write the
> differences.  So if 90% of the rows would be the same as before the
> refresh, we only update 10% of the rows.
>

On a related note, I've mused about allowing a WHERE clause on REFRESH
MATERIALIZED VIEW. To start with, I imagine limiting it to refer to the
columns of a primary key (which implies that primary key constraints would
have to be allowed). As long as this is done, I think it's pretty clear
what the semantics would have to be, at least as to the new view contents:
the equivalent of DELETE with the WHERE clause, followed by INSERT of the
view expression with the same WHERE clause applied.

Reply via email to