マテリアライズドビューを使用すると、複雑なクエリの結果を物理的に保存し、定期的に更新できます。したがって、レポートやビジネスインテリジェンスのために迅速なデータアクセスが必要な場合に役立ちます。 PostgreSQLでマテリアライズドビューを作成する方法は次のとおりです。
PostgreSQLビューとマテリアライズドビュー
マテリアライズドビューはPostgreSQLビューに似ており、SQLクエリを保存して後で呼び出すことができます。ただし、PostgreSQLビューでは、SQLクエリのみを保存でき、その結果は保存できません。マテリアライズドビューを使用すると、クエリ結果を物理的に保存し、定期的に更新できます。その結果、マテリアライズドビューはPostgreSQLビューよりも高速です。
ボーナスリード:PostgreSQLでグループごとに最後の行を取得する方法
PostgreSQLでマテリアライズドビューを作成する方法
以下に示すように、CREATEMATERIALIZEDVIEWステートメントを使用してPostgreSQLでマテリアライズドビューを作成できます。
CREATE MATERIALIZED VIEW view_name AS query WITH [NO] DATA;
上記のステートメントでは、 view_nameに言及する必要があります クエリも同様です その結果をマテリアライズドビューに保存します。
最後に、作成時にビューにデータをロードする場合は、WITHDATAオプションを指定することもできます。 WITH NO DATAと指定すると、ビューに読み取り不可のフラグが付けられ、データをビューにロードするまでビューからデータをクエリできなくなります。
ボーナス読み取り:PostgreSQL作成関数
PostgreSQLマテリアライズドビューの更新
図のように、REFRESH MATERIALIZED VIEWステートメントを使用して、データをマテリアライズド・ビューにロードできます。
REFRESH MATERIALIZED VIEW view_name
上記のステートメントを使用して、マテリアライズド・ビューをリフレッシュすることもできます。
REFRESH MATERIALIZED VIEWステートメントはクエリデータをロックするため、クエリを実行できないことに注意してください。 CONCURRENTLYオプションを使用して回避できます
REFRESH MATERIALIZED VIEW CONCURRENTLY view_name
この場合、PostgreSQLは一時的なビューを作成し、それを元のビューと比較して、必要な挿入、更新、および削除を行います。その結果、CONCURRENTLYオプションは、固有の索引を持つマテリアライズド・ビューでのみ使用可能です。
マテリアライズド・ビューを定期的に自動リフレッシュするには、自動化されたスクリプトを介してREFRESHMATERIALIZEDVIEWを実行できます。
ボーナスリード:PostgreSQL Create Schema
マテリアライズドビューを削除する
DROP MATERIALIZED VIEWステートメントを使用して、マテリアライズド・ビューを削除できます。
DROP MATERIALIZED VIEW view_name
マテリアライズドビューの例
マテリアライズドビューの例をいくつか見てみましょう。
sample_viewというマテリアライズドビューを作成するためのクエリは次のとおりです。
postgres=# create materialized view sample_view as select * from sales with no data;として作成します
上記のクエリでは、WITH NO DATAオプションについて説明したため、ビューにはデータがなく、クエリを実行しようとするとエラーが発生します。
postgres=# select * from sample_view; ERROR: materialized view "sample_view" has not been populated HINT: Use the REFRESH MATERIALIZED VIEW command.
次に、ビューを更新してデータをロードし、ビューに対して上記のクエリを実行します。
postgres=# refresh materialized view sample_view; REFRESH MATERIALIZED VIEW postgres=# select * from sample_view; order_date | sale ------------+------ 2020-04-01 | 210 2020-04-02 | 125 2020-04-03 | 150 2020-04-04 | 230 2020-04-05 | 200 2020-04-10 | 220 2020-04-06 | 250 2020-04-07 | 215 2020-04-08 | 300 2020-04-09 | 250
上記のように、クエリを再度実行すると、結果が得られます。
うまくいけば、データベースのマテリアライズドビューを簡単に作成できるようになりました。
Ubiqを使用すると、データを数分で簡単に視覚化し、リアルタイムのダッシュボードで監視できます。今日それを試してみてください!