物质化视图功能(PostgreSQL)
材料化视图是什么?
通常的视图只保存视图定义的SELECT语句,而不保存表的数据。当对视图进行SELECT操作时,会使用视图定义的SELECT语句来替换为对表的SELECT操作,然后返回表的数据。
物化视图是保存了表的数据的视图。当对物化视图进行SELECT操作时,直接返回物化视图的数据。因此,可以比对视图进行查询时更快地返回结果。
创建物化视图的方法
您可以按照以下方法创建物化视图。除了将MATERIALIZED写入之外,其余步骤与普通视图的创建相同。
写法:CREATE MATERIALIZED VIEW(物化视图名)AS(SELECT语句);
postgres=# select * from have_money_table ; --マテリアライズドビューの元のテーブルの確認
id | name | money
----+------+-------
1 | aoi | 2000
2 | sato | 4000
3 | kato | 5000
(3 rows)
postgres=# create materialized view mat_money_view as select id, money from have_money_table; --マテリアライズドビューの作成
SELECT 3
postgres=# select * from mat_money_view ; --マテリアライズドビューの確認
id | money
----+-------
1 | 2000
2 | 4000
3 | 5000
(3 rows)
材料化视图的注意事项
注意:マテリアライズドビューは、作成後そのままにしておくと、データが古くなる可能性があります。マテリアライズドビューは、作成時のテーブル情報のみを保持し、その後のテーブルへの更新(UPDATEやDELETE)によって更新されません。マテリアライズドビューの内容を最新のテーブルの状態と同じにするには、REFRESH MATERIALIZED VIEWを実行する必要があります。
刷新材料化视图的方法是:REFRESH MATERIALIZED VIEW followed by the name of the materialized view.
postgres=# update have_money_table set money=1000 where id=1; --元のテーブルを更新
UPDATE 1
postgres=# select * from have_money_table ; --元のテーブルの状態を表示
id | name | money
----+------+-------
1 | aoi | 1000
2 | sato | 4000
3 | kato | 5000
(3 rows)
postgres=# select * from mat_money_view ; --マテリアライズドビューの確認(更新されていないことがわかる)
id | money
----+-------
1 | 2000 --moneyが1000になっていない
2 | 4000
3 | 5000
(3 rows)
postgres=# refresh materialized view mat_money_view; --マテリアライズドビューの更新
REFRESH MATERIALIZED VIEW
postgres=# select * from mat_money_view ; --マテリアライズドビューが更新されたか確認
id | money
----+-------
1 | 1000
2 | 4000
3 | 5000
(3 rows)
概括一下
由于物化视图保存了数据本身,所以可以立即返回查询结果。然而,由于这些数据会变旧,所以需要进行刷新。非常感谢您的阅读。