メインコンテンツまでスキップ
バージョン: 4.x

CREATE SYNC MATERIALIZED VIEW

説明

同期マテリアライズドビューを作成するためのステートメントです。

構文

CREATE MATERIALIZED VIEW <materialized_view_name> AS <query>            

どこで

query
:
SELECT <select_expr> select_expr[, select_expr ...]
FROM <base_table>
WHERE condition
GROUP BY <column_name>[, <column_name> ...]
ORDER BY <column_name>[, <column_name> ...]

必須パラメータ

1. <materialized_view_name>

マテリアライズドビューの識別子(名前)を指定します。同期マテリアライズドビューはテーブルをベースに作成されるため、同一テーブル内で名前は一意である必要があります。

識別子は文字で始まる必要があり(Unicode名前サポートが有効な場合、任意の言語の文字を使用可能)、識別子文字列全体がバッククォートで囲まれていない限り(例:My Object)、スペースや特殊文字を含むことはできません。

識別子は予約キーワードにすることはできません。

詳細については、識別子と予約キーワードの要件を参照してください。

2. <query>

マテリアライズドビューの構築に使用するクエリ文で、その結果がマテリアライズドビューのデータを構成します。現在サポートされているクエリ形式は以下の通りです:

構文はクエリ文の構文と一致しています。

  • select_expr:マテリアライズドビューのスキーマ内の全カラム。
    • 少なくとも1つの単一カラムを含む必要があります。
  • base_table:マテリアライズドビューのベーステーブル名、必須項目。
    • 単一テーブルである必要があり、サブクエリは不可。
  • where:マテリアライズドビューのフィルター条件、オプション項目。
    • 指定されない場合、データフィルタリングは実行されません。
  • group by:マテリアライズドビューのグループ化カラム、オプション項目。
    • 指定されない場合、データはグループ化されません。
  • order by:マテリアライズドビューのソートカラム、オプション項目。
    • ソートカラムの宣言順序は、select_exprで宣言されたカラムの順序と一致している必要があります。
    • order byが宣言されていない場合、ルールに従ってソートカラムが自動的に補完されます。マテリアライズドビューが集約型の場合、すべてのグループ化カラムがソートカラムとして自動的に追加されます。マテリアライズドビューが非集約型の場合、最初の36バイトがソートカラムとして自動的に追加されます。
    • 自動的に補完されたソートカラムの数が3未満の場合、最初の3つがソートカラムとして使用されます。クエリにグループ化カラムが含まれている場合、ソートカラムはグループ化カラムと一致している必要があります。

アクセス制御要件

権限オブジェクト備考
ALTER_PRIVTable現在のマテリアライズドビューのベーステーブルに対するALTER_PRIV権限が必要

注意事項

  • 同期マテリアライズドビューは単一テーブルに対するSELECT文のみをサポートし、WHERE、GROUP BY、ORDER BY句をサポートしますが、JOIN、HAVING、LIMIT句やLATERAL VIEWはサポートしません。
  • SELECTリストには自動増分カラム、定数、重複した式、またはウィンドウ関数を含めることはできません。
  • SELECTリストに集約関数が含まれている場合、集約関数はルート式である必要があり(例:sum(a + 1)はサポートされますが、sum(a) + 1はサポートされません)、集約関数の後に他の非集約関数式を続けることはできません(例:SELECT x, sum(a)は許可されますが、SELECT sum(a), xは許可されません)。
  • 単一テーブル上に過多なマテリアライズドビューがあると、データインポートの効率に影響を与える可能性があります:データをインポートする際、マテリアライズドビューとBaseテーブルのデータは同期的に更新されます。テーブル上にマテリアライズドビューが多すぎると、単一のインポート操作で複数のテーブルに同時にデータをインポートするのと同様に、インポート速度が低下する可能性があります。
  • マテリアライズドビューがUnique Keyデータモデルを対象とする場合、カラムの順序の変更のみが可能で、集約を実行することはできません。したがって、Unique Keyモデルでは、マテリアライズドビューを作成してデータを粗い粒度で集約することはできません。
  • マテリアライズドビューがUnique KeyおよびAggregate Keyデータモデルを対象とする場合、WHERE句が指定されている際は、KeyカラムのみでValueカラムは使用できません。

desc lineitem;
+-----------------+---------------+------+-------+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-----------------+---------------+------+-------+---------+-------+
| l_orderkey | int | No | true | NULL | |
| l_partkey | int | No | true | NULL | |
| l_suppkey | int | No | true | NULL | |
| l_linenumber | int | No | true | NULL | |
| l_quantity | decimal(15,2) | No | false | NULL | NONE |
| l_extendedprice | decimal(15,2) | No | false | NULL | NONE |
| l_discount | decimal(15,2) | No | false | NULL | NONE |
| l_tax | decimal(15,2) | No | false | NULL | NONE |
| l_returnflag | char(1) | No | false | NULL | NONE |
| l_linestatus | char(1) | No | false | NULL | NONE |
| l_shipdate | date | No | false | NULL | NONE |
| l_commitdate | date | No | false | NULL | NONE |
| l_receiptdate | date | No | false | NULL | NONE |
| l_shipinstruct | char(25) | No | false | NULL | NONE |
| l_shipmode | char(10) | No | false | NULL | NONE |
| l_comment | varchar(44) | No | false | NULL | NONE |
+-----------------+---------------+------+-------+---------+-------+
CREATE MATERIALIZED VIEW sync_agg_mv AS
SELECT
l_shipdate,
l_partkey,
count(*),
sum(l_discount)
FROM
lineitem
GROUP BY
l_shipdate,
l_partkey;