WHY NEED TO REFRESH POSTGRES MATERIALIZED VIEW ?
Difference between View vs Materialized View in database
Based upon on our understanding of View and Materialized View, Let’s see, some short difference between them :
1) The first difference between View and materialized view is that In Views query result is not stored in the disk or database but Materialized view allow to store the query result in disk or table.
2) Another difference between View vs materialized view is that, when we create a view using any table, rowid of view is same as the original table but in case of Materialized view rowid is different.
3) One more difference between View and materialized view in the database is that In case of View we always get latest data but in case of Materialized view we need to refresh the view for getting latest data.
4) Performance of View is less than Materialized view.
5) This is continuation of first difference between View and Materialized View, In case of view its only the logical view of table no separate copy of table but in case of Materialized view we get physically separate copy of table
6) Last difference between View vs Materialized View is that In case of Materialized view we need an extra trigger or some automatic method so that we can keep MV refreshed, this is not required for views in the database.
Below could block other connections which are trying to read from the materialized view. this is the preferbale in production environment.
REFRESH MATERIALIZED VIEW CONCURRENTLY ehis.citytemp ;
— Below materilaized view Refreshment both are same , WITH DATA is default
refresh materialized view CONCURRENTLY ehis.citytemp with data;
refresh materialized view CONCURRENTLY ehis.citytemp;
— Refresh the bulk materialized view on particular schema
select 'REFRESH MATERIALIZED VIEW '|| schemaname||'.'||matviewname ||';' as mview from pg_matviews where schemaname ='ehis';
–To finding the materialized view whose name start with ‘city’
select * from pg_matviews where schemaname ='ehis' and matviewname like 'city%' order by matviewname;
–To finding the materialized view whose name with ‘city’
select * from pg_matviews where schemaname ='ehis' and matviewname like '%city%' order by matviewname;