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

AnalyticDB:マテリアライズドビューの作成

最終更新日:Feb 06, 2026

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

構文

CREATE [OR REPLACE] MATERIALIZED VIEW mv_name
[mv_definition]
[mv_properties]
[REFRESH {COMPLETE|FAST}]
[ON {DEMAND|OVERWRITE}]
[START WITH date] [NEXT date]
[{DISABLE|ENABLE} QUERY REWRITE]
[COMMENT 'view_comment']
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

オプション

作成後に変更可能:いいえ

AnalyticDB for MySQL クラスターのV3.1.4.7以降のみ、このパラメーターをサポートしています。
  • 同じ名前を使用する既存のマテリアライズドビューがない場合、AnalyticDB for MySQL は新しいマテリアライズドビューを作成します。

  • 同じ名前を使用する既存のマテリアライズドビューがある場合、AnalyticDB for MySQL は一時ビューを作成して新しいデータを書き込み、データが書き込まれた後に元のマテリアライズドビューを置き換えます。

mv_definition

オプション

作成後に変更可能:いいえ

マテリアライズドビューの構造を定義できます。

マテリアライズドビューのスキーマを明示的に定義するかどうかを選択できます。スキーマを明示的に定義しない場合、AnalyticDB for MySQL は query_body 結果の列をマテリアライズドビューの列として使用し、プライマリキーを定義し、すべての列にインデックスを作成し、ホットデータストレージを構成し、エンジンをXUANWUに設定します。

分散キー、パーティションキー、プライマリキー、インデックス、ホットデータとコールドデータの階層型ストレージポリシーを含むスキーマを手動で定義するには、CREATE TABLE ステートメントと同じ方法を使用します。たとえば、すべての列をインデックス化する必要がない場合は、INDEX キーワードを使用してインデックス化する列を指定します。ストレージコストを削減するには、ストレージポリシーを混合ホット/コールドストレージに設定するか、過去1年間のデータのみを保持するように設定します。

プライマリキーのルール
  • 完全リフレッシュ:プライマリキーを明示的に定義しない場合、AnalyticDB for MySQL は自動的に __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 ステートメントを使用)

AnalyticDB for MySQL Enterprise Edition、Basic Edition、またはData Lakehouse Edition クラスターのV3.1.9.3以降のみ、このパラメーターをサポートしています。

マテリアライズドビューのリソースポリシー。使用されるリソースグループ (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エンジンを搭載したジョブリソースグループに設定できます。ジョブリソースグループは、リソースのプロビジョニングに数秒から数分かかります。リフレッシュのレイテンシーが高いことを許容できる場合は、ジョブリソースグループを使用します。ジョブリソースグループを使用するマテリアライズドビューは、エラスティックマテリアライズドビューと呼ばれます。エラスティックマテリアライズドビューのリフレッシュ速度を向上させるには、mv_refresh_hints で elastic_job_max_acu を構成して、最大リソース制限を増やします。エラスティックマテリアライズドビューの例をご参照ください。

利用可能なリソースグループは、コンソールのリソースグループページで確認するか、DescribeDBResourceGroup 操作を呼び出すことで確認できます。

指定されたリソースグループが存在しない場合、マテリアライズドビューの作成時にエラーが発生します。

mv_refresh_hints

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

REFRESH [COMPLETE | FAST]

オプション

デフォルト値:COMPLETE

作成後に変更可能:いいえ

マテリアライズドビューのリフレッシュポリシー。ポリシー間の違いと適用シナリオについては、リフレッシュポリシーの選択方法をご参照ください。

COMPLETE

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

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

FAST
AnalyticDB for MySQL クラスターのV3.1.9.0以降のみ、このパラメーターをサポートしています。V3.1.9.0は高速リフレッシュを伴う単一テーブルのマテリアライズドビューのみをサポートしています。V3.2.0.0以降は、高速リフレッシュを伴う単一テーブルと複数テーブルの両方のマテリアライズドビューをサポートしています。

高速リフレッシュは、マテリアライズドビュークエリ (query_body) を再書き込みして、ベーステーブル内の変更されたデータ (INSERT、DELETE、UPDATE) のみをスキャンし、それを処理してマテリアライズドビューに書き込みます。これにより、すべてのベーステーブルデータのスキャンが回避され、リフレッシュごとの計算オーバーヘッドが削減されます。

高速リフレッシュを伴うマテリアライズドビューを作成する前に、クラスターとベーステーブルのバイナリロギングを有効にします。そうしないと、作成は失敗します。バイナリロギングを有効にするをご参照ください。

高速リフレッシュを伴うマテリアライズドビューは、スケジュールされた自動リフレッシュを使用する必要があります。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秒から5分の間である必要があります。

  • 完全リフレッシュを伴うマテリアライズドビューの場合、NEXT はオプションです。指定した場合、間隔は少なくとも60秒である必要があります。

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 出力列

  • グループ化と集約クエリ (GROUP BY 句を含む集計クエリ) の場合、SELECT リストの出力列には、GROUP BY 句のすべてのグループ化列を含める必要があります。

    例を表示するにはクリック

    正しい例

    誤った例

    CREATE MATERIALIZED VIEW demo_mv1
    REFRESH FAST ON DEMAND
     NEXT now() + INTERVAL 3 minute
    AS
    SELECT 
      sale_id, -- グループ化列を出力。
      sale_date, -- グループ化列を出力。
      max(quantity) AS max, -- 式列にはエイリアスを設定する必要があります。
      sum(price)AS sum
    FROM sales
    GROUP BY sale_id,sale_date;
    CREATE MATERIALIZED VIEW false_mv1
    REFRESH FAST ON DEMAND
     NEXT now() + INTERVAL 3 minute
    AS
    SELECT 
      sale_id, -- グループ化列 sale_date が出力に含まれていません。
      max(quantity) AS max,
      sum(price)AS sum
    FROM sales
    GROUP BY sale_id,sale_date;
  • 非グループ化集計クエリ (GROUP BY 句を含まない集計クエリ) の場合、SELECT リストは定数列と集計列のみ、または集計列のみを出力できます。

    例を表示するにはクリック

    正しい例

    誤った例

    集計列 `max` と `sum` のみを出力します。

    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 false_mv2
    REFRESH FAST ON DEMAND
     NEXT now() + INTERVAL 3 minute
    AS
    SELECT
      sale_id, 
      max(quantity) AS max,
      sum(price) AS sum
    FROM sales;

    定数列 `pk` と集計列 `max` および `sum` を出力します。

    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;
  • 非集計クエリの場合、SELECT リストはベーステーブルのすべてのプライマリキー列を出力する必要があります。

    例を表示するにはクリック

    正しい例

    誤った例

    CREATE MATERIALIZED VIEW demo_mv4
    REFRESH FAST ON DEMAND
     NEXT now() + INTERVAL 3 minute
    AS
    SELECT 
      sale_id, -- ベーステーブルのプライマリキー列を出力。
      quantity
    FROM sales;
    CREATE MATERIALIZED VIEW false_mv3
    REFRESH FAST ON DEMAND
     NEXT now() + INTERVAL 3 minute
    AS
    SELECT 
      sale_date, -- ベーステーブルのプライマリキー列 sale_id が出力に含まれていません。
      quantity
    FROM sales;

    `sales1` テーブルに複合プライマリキー `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, -- ベーステーブルのプライマリキー列を出力。
      quantity
    FROM sales1;

    `sales1` テーブルに複合プライマリキー `PRIMARY KEY(sale_id,sale_date)` があると仮定します。

    CREATE MATERIALIZED VIEW false_mv4
    REFRESH FAST ON DEMAND
     NEXT now() + INTERVAL 3 minute
    AS
    SELECT 
      sale_id, -- ベーステーブルのもう1つのプライマリキー列 sale_date が出力に含まれていません。
      quantity
    FROM sales1;
  • 出力内の各式列にエイリアスを定義します。SUM(price) AS total_price のように、意味のあるエイリアスを使用します。

その他の制限

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

  • `ORDER BY` ソート操作はサポートされていません。

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

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

  • `UNION`、`EXCEPT`、`INTERSECT` などのセット操作はサポートされていません。

  • `INNER JOIN` 操作のみがサポートされています。結合列は、次のすべての条件を満たす必要があります。列はテーブルの元の列であり、同じデータの型を持ち、インデックスを持つ必要があります。最大5つのテーブルを結合できます。

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

  • `AVG` は DECIMAL データの型をサポートしていません。

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

必要な権限

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

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

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

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

    • AnalyticDB for MySQL への、任意の IP アドレス ('%') からの接続権限。

    • マテリアライズドビュー内のデータをリフレッシュするには、ビュー自体、またはそのデータベース内のすべてのテーブルに対する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
);

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

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

    CREATE MATERIALIZED VIEW myview1
    REFRESH   -- REFRESH COMPLETE と同等。
     NEXT now() + INTERVAL 5 minute
    AS
    SELECT count(*) as cnt FROM customer;
  • 毎日02:00: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;
  • 毎週月曜日02:00: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日の02:00: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;
  • 1回のみリフレッシュされる 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 という名前のマテリアライズドビューを作成します。手動リフレッシュ時間は不要です。

    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;
  • 10秒間隔で高速リフレッシュをサポートする fast_mv1 という名前の単一テーブルのマテリアライズドビューを作成します。マテリアライズドビュークエリに集計関数は含まれません。

    CREATE MATERIALIZED VIEW fast_mv1
    REFRESH FAST NEXT now() + INTERVAL 10 second
    AS
    SELECT sale_id, sale_date, price
    FROM sales
    WHERE price > 10;
  • 5秒間隔で高速リフレッシュをサポートする fast_mv2 という名前の単一テーブルのマテリアライズドビューを作成します。マテリアライズドビュークエリにGROUP BY句を含む集計関数が含まれます。

    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                 -- WHERE条件を式を使用して定義できます。
    GROUP BY customer_id, sale_date;
  • 1分間隔で高速リフレッシュをサポートする fast_mv3 という名前の単一テーブルのマテリアライズドビューを作成します。マテリアライズドビュークエリにGROUP BY句を含まない集計関数が含まれます。

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

高速リフレッシュをサポートする複数テーブルのマテリアライズドビューの作成

  • 5秒間隔で高速リフレッシュをサポートし、集約を使用しない fast_mv4 という名前の複数テーブルのマテリアライズドビューを作成します。

    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;
  • 10秒間隔で高速リフレッシュをサポートし、グループ化集約を使用する fast_mv5 という名前の複数テーブルのマテリアライズドビューを作成します。

    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 という名前のマテリアライズドビューを作成し、customer_name 列のみをインデックス化します。

    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 'customer',
      CLUSTERED KEY INDEX(sale_id),
      PRIMARY KEY(sale_id,sale_date)
    ) 
    DISTRIBUTED BY HASH(sale_id)
    COMMENT 'MATERIALIZED VIEW c'
    AS 
    SELECT * FROM sales;

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

  • サーバーレスジョブリソースグループを使用し、毎日リフレッシュされる 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;
  • サーバーレスジョブリソースグループを使用し、最大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;

関連ドキュメント