物质化视图功能(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)

概括一下

由于物化视图保存了数据本身,所以可以立即返回查询结果。然而,由于这些数据会变旧,所以需要进行刷新。非常感谢您的阅读。

广告
将在 10 秒后关闭
bannerAds