マテリアライズドビューは、クエリ結果を格納する事前計算されたオブジェクトです。JOIN や AGGREGATE のような時間のかかる操作の繰り返しを回避することで、クエリのパフォーマンスを向上させます。このトピックでは、マテリアライズドビューの作成、クエリ、ドロップに関するコマンドについて説明します。
制限事項
マテリアライズドビューは Hologres V1.3 以降で利用できます。ご利用のインスタンスのバージョンが V1.3 より前の場合は、スペックアップしてください。
説明
制限事項と操作の詳細については、「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'); -- マテリアライズドビューがドロップされた場合は、詳細テーブルの appendonly プロパティを削除します: -- 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'); -- day 列はパーティションキー列です。マテリアライズドビューの GROUP BY 句に含める必要があります。 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');
マテリアライズドビューのクエリ
例:
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;