マテリアライズドビューは、JOIN や AGGREGATE などの時間のかかる操作の結果を事前に計算して格納するオブジェクトです。後続のクエリでこれらの結果を再利用することで、高コストな操作を繰り返すことなく、クエリパフォーマンスを高速化できます。本トピックでは、マテリアライズドビューに関連するコマンドについて説明します。
制限事項
マテリアライズドビューは Hologres V1.3 以降でのみサポートされています。ご利用のインスタンスがそれ以前のバージョンの場合、「スペックアップ準備時の一般的なエラー」をご参照ください。または、Hologres DingTalk グループにご参加いただき、フィードバックをお寄せください。詳細については、「オンラインサポートをさらに利用するには?」をご参照ください。
説明
制限事項および操作の詳細については、「SQL によるマテリアライズドビューの管理」をご参照ください。
マテリアライズドビューの作成
-
構文
以下の構文を使用してマテリアライズドビューを作成します。
CREATE MATERIALIZED VIEW <mv_name> AS <QUERY BODY>;mv_name はマテリアライズドビューの名前です。QUERY BODY はクエリ文です。詳細については、「SELECT」をご参照ください。
-
例
-
パーティション化されていないテーブルのマテリアライズドビューを作成します。
BEGIN; CREATE TABLE base_sales( day text not null, hour int , ts timestamptz, amount float, pk text not null primary key ); CALL SET_TABLE_PROPERTY('base_sales', 'mutate_type', 'appendonly'); --After the materialized view is dropped, run the following command to disable the appendonly property for the source table. --CALL SET_TABLE_PROPERTY('base_sales', 'mutate_type', 'none'); CREATE MATERIALIZED VIEW mv_sales AS SELECT day, hour, avg(amount) AS amount_avg FROM base_sales GROUP BY day, hour; COMMIT; insert into base_sales values(to_char(now(),'YYYYMMDD'),'12',now(),100,'pk1'); insert into base_sales values(to_char(now(),'YYYYMMDD'),'12',now(),200,'pk2'); insert into base_sales values(to_char(now(),'YYYYMMDD'),'12',now(),300,'pk3'); -
パーティション化されたテーブルのマテリアライズドビューを作成します。
BEGIN; CREATE TABLE base_sales_p( day text not null, hour int, ts timestamptz, amount float, pk text not null, primary key (day, pk) ) partition by list(day); CALL SET_TABLE_PROPERTY('base_sales_p', 'mutate_type', 'appendonly'); --The day column is a partition key column and must be included in the GROUP BY clause of the view. CREATE MATERIALIZED VIEW mv_sales_p AS SELECT day, hour, avg(amount) AS amount_avg FROM base_sales_p GROUP BY day, hour; COMMIT; create table base_sales_20220101 partition of base_sales_p for values in('20220101');
-
マテリアライズドビューのクエリ
以下の SQL 文を使用してマテリアライズドビューをクエリします。
SELECT * FROM mv_sales WHERE day = to_char(now(),'YYYYMMDD') AND hour = 12;
マテリアライズドビューの削除
-
構文
ビューを削除する構文は以下のとおりです。
DROP MATERIALIZED VIEW <mv_name>;mv_name はマテリアライズドビューの名前です。
例
DROP MATERIALIZED VIEW mv_sales;