すべてのプロダクト
Search
ドキュメントセンター

AnalyticDB:CREATE MATERIALIZED VIEW

最終更新日:Sep 17, 2026

このトピックでは、CREATE MATERIALIZED VIEW ステートメントについて説明します。このステートメントを使用して、完全リフレッシュまたは高速リフレッシュのポリシーを持つマテリアライズドビューを作成し、その更新スケジュールを定義します。

構文

CREATE [OR REPLACE] MATERIALIZED VIEW mv_name
[mv_definition]
[mv_properties]
[COMMENT 'view_comment']
[REFRESH {COMPLETE|FAST}]
[ON {DEMAND|OVERWRITE}]
[START WITH date] [NEXT date]
[{DISABLE|ENABLE} QUERY REWRITE]
AS 
query_body

mv_definition:
  ({column_name column_type [column_attributes] [ column_constraints ] [COMMENT 'column_comment']
  | table_constraints}
  [, ... ])
  [table_attribute]
  [partition_options]
  [index_all]
  [storage_policy]
  [block_size]
  [engine]
  [table_properties]

パラメーター

OR REPLACE

オプション

作成後の変更:不可

このパラメーターは、カーネルバージョンが 3.1.4.7 以降のクラスターでのみサポートされています。
  • 同じ名前のマテリアライズドビューが存在しない場合、新しいマテリアライズドビューが作成されます。

  • 同じ名前のマテリアライズドビューが既に存在する場合、システムは一時的なビューを作成し、新しいデータを投入してから、元のマテリアライズドビューを置き換えます。

mv_definition

オプション

作成後の変更:不可

マテリアライズドビューのスキーマを定義します。

この句を省略した場合、システムは query_body からスキーマを推測します。デフォルトでは、システムはプライマリキーを定義し、すべての列にインデックスを作成し、ストレージポリシーをホットストレージに設定し、XUANWU エンジンを使用します。

分散キー、パーティションキー、プライマリキー、インデックス、ホット/コールドデータストレージポリシーなど、マテリアライズドビューのスキーマを手動で定義するには、CREATE TABLE ステートメントと同じ構文を使用します。たとえば、すべての列にインデックスを作成したくない場合は、INDEX キーワードを使用してインデックスを作成する列を指定できます。ストレージコストを削減するために、ホット/コールド混在ストレージポリシーを定義したり、過去 1 年間のデータのみを保持したりすることもできます。

プライマリキーのルール
  • 完全リフレッシュ:プライマリキーが明示的に定義されていない場合、システムは自動的に列 __adb_auto_id__ をマテリアライズドビューのプライマリキーとして生成します。プライマリキーを明示的に定義したい場合は、query_body の出力から任意の列をマテリアライズドビューのプライマリキーとして使用できます。

  • 高速リフレッシュ:明示的に定義されているか、自動的に生成されているかに関わらず、プライマリキーは次のルールに従う必要があります。

    • グループ集計クエリ (GROUP BY 句を持つ集計クエリ) の場合、プライマリキーは GROUP BY 列である必要があります。たとえば、GROUP BY a,b を使用する場合、プライマリキーは a と b である必要があります。

    • 非グループ化集計クエリ (GROUP BY 句なし) の場合、プライマリキーは定数である必要があります。

    • 非集計クエリの場合、プライマリキーはベーステーブルのプライマリキーと同じである必要があります。たとえば、ベーステーブルのプライマリキーが PRIMARY KEY(sale_id,sale_date) の場合、マテリアライズドビューのプライマリキーも PRIMARY KEY(sale_id,sale_date) である必要があります。

推奨事項

最適なクエリパフォーマンスを得るために、マテリアライズドビューを作成する際にプライマリキー、分散キー、パーティションキーを定義することを推奨します。

mv_properties

オプション

作成後の変更:可 (ALTER MATERIALIZED VIEW を使用)

このパラメーターは、カーネルバージョンが 3.1.9.3 以降の Enterprise Edition、Basic Edition、および Data Lakehouse Edition のクラスターでのみサポートされています。

マテリアライズドビューのリソースポリシーを定義します。これには、リソース割り当て用の mv_resource_group と、リフレッシュタスク設定用の mv_refresh_hints が含まれます。値は JSON 形式である必要があります。例:

MV_PROPERTIES='{
  "mv_resource_group":"<resource_group_name>",
  "mv_refresh_hints":{"<hint_name>":"<hint_value>"}
}'
mv_resource_group

マテリアライズドビューの作成とリフレッシュに使用されるリソースグループを指定します。指定しない場合、デフォルトの user_default リソースグループが使用されます。

このパラメーターの値は、XIHE エンジンの Interactive または Job リソースグループを指定できます。違いは、Job リソースグループはオンデマンドでリソースをプロビジョニングするため、通常は数秒から数分のレイテンシーが発生します。リフレッシュレイテンシーに対する許容度が高い場合は、Job リソースグループを指定できます。Job リソースグループを使用するマテリアライズドビューは、エラスティックマテリアライズドビューとも呼ばれます。エラスティックマテリアライズドビューのリフレッシュ速度を上げるには、mv_refresh_hintselastic_job_max_acu パラメーターを設定して、マテリアライズドビューが使用できるリソースの最大量を変更できます。使用方法の詳細については、後述の「エラスティックマテリアライズドビューの例」セクションをご参照ください。

クラスターで利用可能なリソースグループは、コンソールの [Resource Groups] ページで確認するか、DescribeDBResourceGroup API を呼び出すことで確認できます。

指定されたリソースグループが存在しない場合、操作は失敗します。

mv_refresh_hints

マテリアライズドビューの設定パラメーターを指定します。サポートされているパラメーターとその使用方法の一覧については、「共通ヒント」をご参照ください。

REFRESH [COMPLETE | FAST]

オプション

デフォルト値:COMPLETE

作成後の変更:不可

マテリアライズドビューのリフレッシュポリシーを定義します。リフレッシュポリシーの違いとそれぞれのユースケースについては、「リフレッシュポリシーの選択」をご参照ください。

COMPLETE

完全リフレッシュでは、元のクエリ SQL を実行してベーステーブル内のすべての対象パーティションのデータをスキャンし、新しく計算されたデータで古いデータを完全に上書きします。

完全リフレッシュは、ON DEMAND [START WITH date] [NEXT date] および ON OVERWRITE リフレッシュトリガーメカニズムをサポートしており、オンデマンドでの手動リフレッシュ、スケジュールされた自動リフレッシュ、またはベーステーブルが上書きされたときの自動リフレッシュを実行できます。

FAST
このパラメーターは、バージョン 3.1.9.0 以降でサポートされています。バージョン 3.1.9.0 は、単一テーブルのマテリアライズドビューでのみ高速リフレッシュをサポートします。バージョン 3.2.0.0 以降は、単一テーブルと複数テーブルの両方のマテリアライズドビューで高速リフレッシュをサポートします。

高速リフレッシュを実行します。システムはビューのクエリ (query_body) を書き換えて、ベーステーブル内の変更されたデータ (INSERTDELETEUPDATE 操作による) のみをスキャンし、これらの変更をマテリアライズドビューに適用します。これにより、各サイクルでベーステーブル全体のスキャンが不要になり、各リフレッシュの計算コストを削減します。

高速リフレッシュを使用するマテリアライズドビューを作成する前に、クラスターとベーステーブルの両方でバイナリロギング機能を有効にする必要があります。そうしないと、作成は失敗します。手順については、「バイナリロギング機能の有効化」をご参照ください。

高速リフレッシュを使用するマテリアライズドビューの場合、リフレッシュトリガーメカニズムはスケジュールされた自動リフレッシュである必要があります。ON DEMAND {NEXT date} を使用して、次のリフレッシュ時刻を定義する必要があります。

高速リフレッシュにはいくつかの制限事項があります。query_body が高速リフレッシュをサポートしていない場合、マテリアライズドビューを作成しようとするとエラーが発生します。

ON [DEMAND | OVERWRITE]

オプション

デフォルト値:DEMAND

作成後の変更:不可

マテリアライズドビューのリフレッシュトリガーメカニズムを定義します。リフレッシュトリガーメカニズムの違いとそのユースケースについては、「リフレッシュトリガーメカニズムの選択」をご参照ください。

DEMAND

オンデマンドでリフレッシュします。必要に応じてマテリアライズドビューを手動でリフレッシュしたり、NEXT を使用してスケジュールされた自動リフレッシュを指定したりできます。

高速リフレッシュマテリアライズドビューは ON DEMAND のみをサポートします。

OVERWRITE

マテリアライズドビューは、そのベーステーブルのデータが INSERT OVERWRITE ステートメントによって上書きされた後、自動的にリフレッシュされます。

リフレッシュトリガーメカニズムが ON OVERWRITE の場合、START WITH または NEXT を定義できません。

[START WITH date] [NEXT date]

オプション

作成後の変更:不可

マテリアライズドビューのリフレッシュトリガーメカニズムが ON DEMAND の場合、その更新スケジュールを定義できます。スケジュールが定義されていない場合、ビューは定期的にリフレッシュされません。

START WITH

最初のリフレッシュの時刻。省略した場合、ビューは作成後すぐにリフレッシュされます。

NEXT

次のスケジュールされたリフレッシュの時刻。

  • 高速リフレッシュを使用するマテリアライズドビューの場合、NEXT を指定する必要があります。自動リフレッシュ間隔は 5 秒 (s) から 5 分 (min) の間でなければなりません。

  • 完全リフレッシュを使用するマテリアライズドビューの場合、NEXT はオプションです。指定した場合、最小自動リフレッシュ間隔は 60 秒 (s) です。

date

時刻関数がサポートされています。時刻の精度は秒単位です。ミリ秒は切り捨てられます。

[DISABLE | ENABLE] QUERY REWRITE

オプション

デフォルト値:DISABLE

作成後の変更:可 (ALTER MATERIALIZED VIEW を使用)

このパラメーターは、バージョン 3.1.4 以降でのみサポートされています。

このマテリアライズドビューの自動クエリリライトを有効または無効にします。詳細については、「マテリアライズドビューのクエリリライト」をご参照ください。

DISABLE

現在のマテリアライズドビューのクエリリライト機能を無効にします。

ENABLE

現在のマテリアライズドビューのクエリリライト機能を有効にします。この機能を有効にすると、オプティマイザは SQL パターンに基づいてクエリのすべてまたは一部を書き換え、それをマテリアライズドビューにルーティングできます。これにより、ベーステーブルで元の計算を実行する必要がなくなり、クエリのパフォーマンスを向上させます。

query_body

必須

作成後の変更:不可

マテリアライズドビューのベーステーブルに対するクエリを定義します。

完全リフレッシュを使用するマテリアライズドビューの場合、ベーステーブルは AnalyticDB for MySQL の内部テーブル、外部テーブル、既存のマテリアライズドビュー、またはビューにできます。クエリに制限はありません。クエリ構文の詳細については、「SELECT」をご参照ください。

高速リフレッシュを使用するマテリアライズドビューの場合、ベーステーブルは AnalyticDB for MySQL の内部テーブルである必要があります。クエリは次のルールに従う必要があります。

SELECT 列のルール

SELECT リストの列は、次のルールに従う必要があります。

  • GROUP BY と集計関数を使用する場合:SELECT リストにすべての GROUP BY 列を含めます。

    正しい例 (すべての GROUP BY 列が含まれています):

    CREATE MATERIALIZED VIEW demo_mv1
    REFRESH FAST ON DEMAND
     NEXT now() + INTERVAL 3 minute
    AS
    SELECT
      sale_id,    -- GROUP BY 列
      sale_date,  -- GROUP BY 列
      max(quantity) AS max,  -- 式列にはエイリアスが必要です
      sum(price) AS sum
    FROM sales
    GROUP BY sale_id, sale_date;

    誤った例 (GROUP BY 列 sale_date がありません):

    CREATE MATERIALIZED VIEW false_mv1
    REFRESH FAST ON DEMAND
     NEXT now() + INTERVAL 3 minute
    AS
    SELECT
      sale_id,
      max(quantity) AS max,
      sum(price) AS sum
    FROM sales
    GROUP BY sale_id, sale_date;  -- sale_date は GROUP BY にありますが、SELECT にはありません
  • 集計関数を使用し、GROUP BY を使用しない場合:SELECT リストには、集計列のみ、または定数と集計列のみを含めることができます。

    -- 集計列のみ
    CREATE MATERIALIZED VIEW demo_mv2
    REFRESH FAST ON DEMAND
     NEXT now() + INTERVAL 3 minute
    AS
    SELECT
      max(quantity) AS max,
      sum(price) AS sum
    FROM sales;
    
    -- 定数と集計列 (定数がプライマリキーになります)
    CREATE MATERIALIZED VIEW demo_mv3
    REFRESH FAST ON DEMAND
     NEXT now() + INTERVAL 3 minute
    AS
    SELECT
      1 AS pk,
      max(quantity) AS max,
      sum(price) AS sum
    FROM sales;
  • 集計なしの場合:ベーステーブルのすべてのプライマリキー列を含めます。

    -- 単一プライマリキー
    CREATE MATERIALIZED VIEW demo_mv4
    REFRESH FAST ON DEMAND
     NEXT now() + INTERVAL 3 minute
    AS
    SELECT
      sale_id,   -- ベーステーブル sales のプライマリキー列
      quantity
    FROM sales;
    
    -- 複合プライマリキー:PRIMARY KEY(sale_id, sale_date)
    CREATE MATERIALIZED VIEW demo_mv5
    REFRESH FAST ON DEMAND
     NEXT now() + INTERVAL 3 minute
    AS
    SELECT
      sale_id,    -- 最初のプライマリキー列
      sale_date,  -- 2 番目のプライマリキー列
      quantity
    FROM sales1;
  • UNION ALL クエリ:各ブランチは、ブランチごとに異なる定数値の union_all_marker という名前の列を出力する必要があります。すべてのベーステーブルのプライマリキー列を含めます。マテリアライズドビューのプライマリキーには、ベーステーブルのプライマリキー列と union_all_marker の両方を含める必要があります。

    CREATE MATERIALIZED VIEW demo_union_all_mv (PRIMARY KEY(id, union_all_marker))
    REFRESH FAST NEXT now() + INTERVAL 5 minute
    AS
    SELECT customer_id AS id, "customer" AS union_all_marker
    FROM customer
    UNION ALL
    SELECT sale_id AS id, "sales" AS union_all_marker
    FROM sales;
  • 式列:SELECT リスト内のすべての式列には、たとえば SUM(price) AS total_price のようにエイリアスを付ける必要があります。

その他の制限事項

  • NOW()RAND() などの非決定的式はサポートされていません。

  • ORDER BY 句はサポートされていません。

  • HAVING 句はサポートされていません。

  • ウィンドウ関数はサポートされていません。

  • UNIONEXCEPTINTERSECT などの集合演算はサポートされていません。UNION ALL はバージョン 3.2.5.0 以降でサポートされています。

  • INNER JOIN のみがサポートされています。結合キーはテーブルの元の列であり、データ型が同じで、インデックスが作成されている必要があります。最大 5 つのテーブルを結合できます。

    より多くのテーブルを結合するには、テクニカルサポートにお問い合わせください。
  • 次の集計関数のみがサポートされています:COUNTSUMMAXMINAVGAPPROX_DISTINCT、および COUNT(DISTINCT)

  • AVGDECIMAL データ型をサポートしていません。

  • COUNT(DISTINCT)INTEGER データ型のみをサポートしています。

必要な権限

マテリアライズドビューを作成するユーザーは、次のすべての権限を持っている必要があります。

  • マテリアライズドビューが作成されるデータベースに対する CREATE 権限。

  • マテリアライズドビューのすべてのベーステーブルの関連する列 (またはテーブル全体) に対する SELECT 権限。

  • 自動的にリフレッシュされるマテリアライズドビューを作成するには、次の 2 つの権限も必要です。

    • 任意の IP アドレス (つまり '%') から AnalyticDB for MySQL に接続する権限。

    • マテリアライズドビューまたはマテリアライズドビューが存在するデータベース内のすべてのテーブルに対する INSERT 権限。そうしないと、システムはマテリアライズドビューのデータをリフレッシュできません。

前提条件

このトピックの例では、このセクションで作成されたベーステーブルを使用します。例を実行するには、まず次の SQL ステートメントを使用してベーステーブルを作成します。

/*+ RC_DDL_ENGINE_REWRITE_XUANWUV2=false */ -- テーブルエンジンを XUANWU に設定します。
CREATE TABLE customer (
    customer_id INT PRIMARY KEY,
    customer_name VARCHAR(255),
    is_vip Boolean
);

/*+ RC_DDL_ENGINE_REWRITE_XUANWUV2=false */ -- テーブルエンジンを XUANWU に設定します。
CREATE TABLE sales (
    sale_id INT PRIMARY KEY,
    product_id INT,
    customer_id INT,
    price DECIMAL(10, 2),
    quantity INT,
    sale_date TIMESTAMP
);
/*+ RC_DDL_ENGINE_REWRITE_XUANWUV2=false */ -- テーブルが XUANWU エンジンを使用することを指定します。
CREATE TABLE sales (
    sale_id INT PRIMARY KEY,
    product_id INT,
    customer_id INT,
    price DECIMAL(10, 2),
    quantity INT,
    sale_date TIMESTAMP
);

完全リフレッシュのマテリアライズドビュー

  • 5 分ごとにリフレッシュされるマテリアライズドビュー myview1 を作成します。

    CREATE MATERIALIZED VIEW myview1
    REFRESH   -- REFRESH COMPLETE と同等
     NEXT now() + INTERVAL 5 minute
    AS
    SELECT count(*) as cnt FROM customer;
  • 毎日午前 2:00 にリフレッシュされるマテリアライズドビュー myview2 を作成します。

    CREATE MATERIALIZED VIEW myview2
    REFRESH COMPLETE
     START WITH DATE_FORMAT(now() + INTERVAL 1 day, '%Y-%m-%d 02:00:00')
     NEXT DATE_FORMAT(now() + INTERVAL 1 day, '%Y-%m-%d 02:00:00')
    AS
    SELECT count(*) as cnt FROM customer;
  • 毎週月曜日の午前 2:00 にリフレッシュされるマテリアライズドビュー myview3 を作成します。

    CREATE MATERIALIZED VIEW myview3
    REFRESH COMPLETE ON DEMAND
     START WITH DATE_FORMAT(now() + INTERVAL 7 - weekday(now()) day, '%Y-%m-%d 02:00:00') 
     NEXT DATE_FORMAT(now() + INTERVAL 7 - weekday(now()) day, '%Y-%m-%d 02:00:00')
    AS
    SELECT count(*) as cnt FROM customer;
  • 毎月 1 日の午前 2:00 にリフレッシュされるマテリアライズドビュー myview4 を作成します。

    CREATE MATERIALIZED VIEW myview4
    REFRESH   -- REFRESH COMPLETE と同等
     NEXT DATE_FORMAT(last_day(now()) + INTERVAL 1 day, '%Y-%m-%d 02:00:00')
    AS
    SELECT count(*) as cnt FROM customer;
  • マテリアライズドビュー myview5 を作成し、一度だけリフレッシュします。

    CREATE MATERIALIZED VIEW myview5
    REFRESH   -- REFRESH COMPLETE と同等
     START WITH now() + INTERVAL 1 day
    AS 
    SELECT count(*) as cnt FROM customer;
  • 自動的にリフレッシュされず、完全に手動リフレッシュに依存するマテリアライズドビュー myview6 を作成します。

    CREATE MATERIALIZED VIEW myview6 (
      PRIMARY KEY (customer_id)
    ) DISTRIBUTED BY HASH (customer_id)
    AS
    SELECT customer_id FROM customer;

    マテリアライズドビューを手動でリフレッシュします。

    REFRESH MATERIALIZED VIEW myview6;
  • マテリアライズドビュー myview7 を作成します。ベーステーブルが INSERT OVERWRITE 操作によって上書きされた後、マテリアライズドビューは自動的にリフレッシュされるため、手動でリフレッシュ時刻を定義する必要はありません。

    CREATE MATERIALIZED VIEW myview7
    REFRESH COMPLETE ON OVERWRITE
    AS
    SELECT count(*) as cnt FROM customer;

高速リフレッシュを使用する単一テーブルのマテリアライズドビュー

高速リフレッシュを使用するマテリアライズドビューを作成する前に、クラスターとベーステーブルのバイナリロギング機能を有効にする必要があります。
SET ADB_CONFIG BINLOG_ENABLE=true;
ALTER TABLE customer binlog=true;
ALTER TABLE sales binlog=true;
  • 高速リフレッシュを使用し、集計なしの単一テーブルマテリアライズドビュー fast_mv1 を作成します。10 秒ごとにリフレッシュされます。

    CREATE MATERIALIZED VIEW fast_mv1
    REFRESH FAST NEXT now() + INTERVAL 10 second
    AS
    SELECT sale_id, sale_date, price
    FROM sales
    WHERE price > 10;
  • 高速リフレッシュを使用し、グループ化集計を行う単一テーブルマテリアライズドビュー fast_mv2 を作成します。5 秒ごとにリフレッシュされます。

    CREATE MATERIALIZED VIEW fast_mv2
    REFRESH FAST NEXT now() + INTERVAL 5 second
    AS
    SELECT
       customer_id, sale_date,                 -- システムは自動的に GROUP BY 列をマテリアライズドビューのプライマリキーとして含めます。
       COUNT(sale_id) AS cnt_sale_id,          -- 集計出力列。
       SUM(price * quantity) AS total_revenue, -- 集計出力列。
       customer_id / 100 AS new_customer_id    -- 非集計出力列は任意の式を使用できます。
    FROM sales
    WHERE ifnull(price, 1) > 0                 -- 条件には任意の式を使用できます。
    GROUP BY customer_id, sale_date;
  • 高速リフレッシュを使用し、グループ化集計を行わない単一テーブルマテリアライズドビュー fast_mv3 を作成します。1 分ごとにリフレッシュされます。

    CREATE MATERIALIZED VIEW fast_mv3
    REFRESH FAST NEXT now() + INTERVAL 1 minute
    AS
    SELECT count(*) AS cnt   -- システムは自動的に定数のプライマリキーを生成し、マテリアライズドビューにレコードが 1 つだけ存在するようにします。
    FROM sales;

高速リフレッシュを使用する複数テーブルのマテリアライズドビュー

  • 高速リフレッシュを使用し、集計なしの複数テーブルマテリアライズドビュー fast_mv4 を作成します。5 秒ごとにリフレッシュされます。

    CREATE MATERIALIZED VIEW fast_mv4
    REFRESH FAST NEXT now() + INTERVAL 5 second
    AS
    SELECT 
        c.customer_id,
        c.customer_name,
        s.sale_id,
        (s.price * s.quantity) AS revenue
    FROM 
        sales s
    JOIN 
        customer c ON s.customer_id = c.customer_id;
  • 高速リフレッシュを使用し、グループ化集計を行う複数テーブルマテリアライズドビュー fast_mv5 を作成します。10 秒ごとにリフレッシュされます。

    CREATE MATERIALIZED VIEW fast_mv5
    REFRESH FAST NEXT now() + INTERVAL 10 second
    AS
    SELECT 
        s.sale_id,
        c.customer_name,
        COUNT(*) AS cnt,           
        SUM(s.price * s.quantity) AS revenue                
    FROM 
        sales s
    JOIN 
        (SELECT customer_id, customer_name FROM customer) c ON c.customer_id = s.customer_id
    GROUP BY 
        s.sale_id, c.customer_name;

パーティション化されたマテリアライズドビュー

マテリアライズドビュー myview8 を作成し、分散キーとパーティションキーを定義します。

CREATE MATERIALIZED VIEW myview8 (
  quantity INT,    -- マテリアライズドビューには、定義で明示的にリストされていなくても、クエリ結果のすべての列が含まれます。
  price DECIMAL(10, 2),
  sale_date TIMESTAMP
) 
DISTRIBUTED BY HASH(sale_id)
PARTITION BY VALUE(date_format(sale_date, "%Y%m%d")) LIFECYCLE 30
AS 
SELECT * FROM sales;

キーとインデックスの定義

  • マテリアライズドビュー myview9 を作成し、すべての列ではなく、指定された列 sale_date にのみインデックスを作成します。

    CREATE MATERIALIZED VIEW myview9 (
      INDEX (sale_date),
      PRIMARY KEY (sale_id)
    ) DISTRIBUTED BY HASH (sale_id)
    REFRESH
     NEXT now() + INTERVAL 1 DAY
    AS
    SELECT * FROM sales;
  • プライマリキー、分散キー、クラスター化インデックス、指定された列のインデックス、およびコメントを持つマテリアライズドビュー myview10 を作成します。

    CREATE MATERIALIZED VIEW myview10 (
      quantity INT,    -- マテリアライズドビューには、定義で明示的にリストされていなくても、クエリ結果のすべての列が含まれます。
      price DECIMAL(10, 2),
      KEY INDEX_ID(customer_id) COMMENT '顧客',
      CLUSTERED KEY INDEX(sale_id),
      PRIMARY KEY(sale_id,sale_date)
    ) 
    DISTRIBUTED BY HASH(sale_id)
    COMMENT 'マテリアライズドビュー c'
    AS 
    SELECT * FROM sales;

エラスティックマテリアライズドビュー

  • Job タイプのリソースグループ serverless を使用して作成とリフレッシュを行い、1 日 1 回の頻度で更新されるエラスティックマテリアライズドビュー myview11 を作成します。

    CREATE MATERIALIZED VIEW myview11
    MV_PROPERTIES='{
      "mv_resource_group":"serverless"
    }'
    REFRESH COMPLETE ON DEMAND
     START WITH now()
     NEXT now() + INTERVAL 1 DAY
    AS
    SELECT * FROM sales;
  • Job タイプのリソースグループ serverless を使用して作成とリフレッシュを行い、このグループから 12 ACU のリソースを利用できるエラスティックマテリアライズドビュー myview12 を作成します。

    CREATE MATERIALIZED VIEW myview12
    MV_PROPERTIES='{
      "mv_resource_group":"serverless",
      "mv_refresh_hints":{"elastic_job_max_acu":"12"}
    }'
    REFRESH COMPLETE ON DEMAND
     START WITH now()
     NEXT now() + INTERVAL 1 DAY
    AS
    SELECT * FROM sales;

関連トピック