REFRESH MATERIALIZED VIEW — マテリアライズドビューの内容を置換する
REFRESH MATERIALIZED VIEW [ CONCURRENTLY ] name
[ WITH [ NO ] DATA ]
REFRESH MATERIALIZED VIEW
はマテリアライズドビューの内容を完全に置き換えます。
このコマンドを実行するには、マテリアライズドビューの所有者でなければなりません。
古い内容は破棄されます。
WITH DATA
が指定されている場合(またはデフォルトでは)、新しいデータを提供するために裏付け問い合わせが実行され、マテリアライズドビューはスキャン可能状態になります。
WITH NO DATA
が指定されている場合、新しいデータは生成されず、マテリアライズドビューはスキャン不可状態になります。
CONCURRENTLY
とWITH NO DATA
を同時に指定することはできません。
CONCURRENTLY
そのマテリアライズドビューに対して同時に実行されるSELECTをロックすることなく、マテリアライズドビューをREFRESHします。 このオプションを使わない場合、多くの行に影響を与えるREFRESHはリソースをあまり使わず、早く終わる代わりに、そのマテリアライズドビューから読み込もうとしている他の接続をブロックするかもしれません。 影響を与える行が少ない場合は、このオプションは速いかもしれません。
このオプションは、マテリアライズドビューに、列名だけを使い、すべての行を含むUNIQUE
インデックスが少なくとも1つある場合にのみ使えます。
つまり、それは式のインデックスであったり、WHERE
句を含んでいてはいけません。
このオプションは、マテリアライズドビューがスキャン不可状態のときは使うことができません。
このオプションを使う場合でも、1つのマテリアライズドビューに対して同時に実行できるREFRESH
は一つだけです。
name
更新するマテリアライズドビューの名前(スキーマ修飾可)です。
マテリアライズドビューを定義する問い合わせにORDER BY
句があれば、マテリアライズドビューの元の内容はその順序で並べられます。ですが、REFRESH MATERIALIZED VIEW
は、その順序が保たれることを保証しません。
以下のコマンドは、マテリアライズドビューの定義からの問い合わせを用いてorder_summary
というマテリアライズドビューの内容を置き換え、スキャン可能状態とします。
REFRESH MATERIALIZED VIEW order_summary;
以下のコマンドはマテリアライズドビューannual_statistics_basis
に関連する格納領域を解放し、スキャン不可状態とします。
REFRESH MATERIALIZED VIEW annual_statistics_basis WITH NO DATA;
REFRESH MATERIALIZED VIEW
はPostgreSQLの拡張です。