先週のチュートリアルでは、実際の例として DVDレンタルデータベース を使用して、PostgreSQLでマテリアライズドビューを作成する方法を説明しました。そこで学んだように、PostgreSQLのマテリアライズドビューは、クエリの結果セットを物理テーブルとして事前計算して保存することにより、クエリのパフォーマンスを向上させる強力なメカニズムを提供します。今日のフォローアップでは、ビューの更新、ビューに対するクエリの実行、不要になったビューの削除など、その他の関連するマテリアライズドビューの操作について説明します。前回のブログ記事と同様に、両方のDMLステートメントと、 Navicat GUIを介して同じ結果を達成する方法について説明します。
マテリアライズドビューの更新
マテリアライズドビューのデータは、基になるテーブルの変更を反映するために定期的に更新する必要があります。次のコマンドを使用してマテリアライズドビューを更新できます:
REFRESH MATERIALIZED VIEW mv_category_revenue;
Navicatでは、オブジェクトタブでマテリアライズドビューを右クリック(またはmacOSではControlを押しながらクリック)し、ポップアップメニューから"マテリアライズドビューを更新" -> "データ"または"データなし"を選択することによって、マテリアライズドビューの内容を更新して完全に置き換えることができます:

マテリアライズドビューのクエリ
マテリアライズドビューが完成したので、他のテーブルと同じようにクエリを実行できます:
SELECT * FROM mv_category_revenue;
このクエリは、映画カテゴリとその総収益を返し、複数のテーブルを繰り返し結合することなく、この情報を迅速かつ効率的に取得する方法を提供します。
Navicatでは、クエリエディタツールまたはクエリビルダツールを使用してクエリを作成できます。クエリエディタの場合、オートコンプリート機能が数回のキーストロークでマテリアライズドビューを認識します!

マテリアライズドビューは、クエリビルダのオブジェクトペインにも含まれています。マテリアライズドビューをクエリに追加するためには、マテリアライズドビューをオブジェクトペインからダイアグラムペインにドラッグするか、オブジェクトペインでダブルクリックします:

マテリアライズドビューの削除
マテリアライズドビューが不要になった場合は、DROP MATERIALIZED VIEWコマンドを使用して削除することができます。mv_category_revenueビューを削除するステートメントは次のとおりです:
DROP MATERIALIZED VIEW mv_category_revenue;
Navicatでマテリアライズドビューを削除する方法は、いくつかあります。1つ目は次のとおりです:
- メインウィンドウのツールバーで"マテリアライズドビュー"を選択します。
- 次に、オブジェクトリストで削除したいマテリアライズドビューを選択します。これにより、"マテリアライズドビューを削除"ボタンを含む、オブジェクトツールバーのいくつかのボタンが有効になります:
- "マテリアライズドビューを削除"ボタンをクリックすると、選択したマテリアライズドビューを本当に削除するかどうかを確認するダイアログプロンプトが表示されます。
Navicatでマテリアライズドビューを削除する2つ目の方法は、メインウィンドウのナビゲーションペインまたはオブジェクトリストでマテリアライズドビューを右クリック(macOSではControlを押しながらクリック)し、コンテキストメニューから"マテリアライズドビューを削除"を選択します:

結論
このチュートリアルでは、ビューの更新、ビューに対するクエリの実行、ビューの削除など、いくつかの関連するマテリアライズドビュー操作を実行する方法を学びました。それぞれのケースで、両方のDMLステートメントと、Navicat GUIを介して同じ結果を達成する方法について説明しました。