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

AnalyticDB:具体化されたビューの作成

最終更新日:Jun 12, 2024

本ページでは、具体化されたビューの作成方法について説明します。

必要な権限。

  • ビューを作成するには、データベースまたはテーブルに対するcreate権限が必要です。

  • マテリアライズドビューを更新するには、データベースまたはテーブルに対するINSERT権限が必要です。

  • 関連するテーブル列またはマテリアライズドビューに含まれるすべてのテーブルに対するSELECT権限が必要です。

  • 作成したマテリアライズドビューの自動更新を構成する場合は、オンプレミスサーバー (127.0.0.1) またはIPアドレス ('%') を使用してビューを更新する権限が必要です。

構文

作成 [または交換] 素材化ビュー <mv_name>
[MV定義]
[REFRESH [COMPLETE | FAST] [ON [DEMAND | OVERWRITE] [START WITH date] [NEXT date]]]
[クエリの書き直し]
AS
<QUERY BODY>; 

パラメーター

説明

または交換

作成するマテリアライズドビューの名前が既存のマテリアライズドビューの名前と同じかどうかに基づいて、マテリアライズドビューを作成するために使用されるルール。

  • 既存のマテリアライズドビューが同じ名前を使用していない場合、AnalyticDB for MySQLはマテリアライズドビューを作成します。

  • 既存のマテリアライズドビューが同じ名前を使用する場合、AnalyticDB for MySQLは既存のマテリアライズドビューを削除し、別のマテリアライズドビューを作成します。

説明

このパラメーターは、V3.1.4.7以降のAnalyticDB for MySQLクラスターで有効になります。

mv_name

マテリアライズド・ビューの名前。

MV定義

マテリアライズドビューのテーブル関連のプロパティ。

  • マテリアライズド・ビューは、標準テーブル・スキーマを使用してデータを格納する。 マテリアライズドビューを作成するときは、パーティションキー、配布キー、インデックス、ホットデータとコールドデータのストレージポリシーなど、標準テーブルの作成に使用できるすべてのパラメーターを使用できます。 マテリアライズドビューを作成するときは、後続のクエリのパフォーマンスを向上させるために、パーティションキーとプライマリキーを指定することをお勧めします。 標準テーブルの作成に使用できるパラメーターの詳細については、「create table」をご参照ください。

  • 既定では、マテリアライズドビューは、標準テーブルと同じ方法ですべての列でインデックス付けされます。 ストレージとI/Oの書き込みを減らすために、マテリアライズドビューをすべての列でインデックス付けする必要がない場合に、INDEXパラメーターを設定して特定の列にインデックスを付けることができます。 マテリアライズドビューでインデックスを作成するために使用される構文は、標準テーブルでインデックスを作成するために使用される構文と同じです。 詳細については、「CREATE TABLE」をご参照ください。

  • マテリアライズドビューを作成するときに、クエリ結果に含まれない列を指定することはできません。 このルールは、テーブルを作成するときに使用されるルールと同じです。

リフレッシュ完了

フルリフレッシュ方法。

マテリアライズドビューの作成時にリフレッシュ方法を指定しない場合は、フルリフレッシュが使用されます。

リフレッシュ高速

増分リフレッシュ方法。

説明

V3.1.9.0以降のAnalyticDB For MySQLクラスターの場合、単一のテーブルに基づいて定義されたマテリアライズドビューに対して増分更新を実行できます。 V3.2.0.0以降のAnalyticDB For MySQLクラスターの場合、複数のテーブルに基づいて定義されたマテリアライズドビューに対して増分更新を実行できます。 詳細については、「マテリアライズドビューの増分更新の設定 (プレビュー) 」をご参照ください。

需要

リフレッシュのオンデマンドトリガモード。 次のリフレッシュをオンデマンドで設定するには、手動でリフレッシュをトリガーするか、nextパラメーターを指定します。

デフォルトでは、フルリフレッシュはオンデマンドモードでトリガーされます。

上書き

更新の上書きトリガーモード。 INSERT OVERWRITEステートメントを実行して、マテリアライズドビューに含まれるベーステーブルが上書きされると、フルリフレッシュがトリガーされます。 このモードは、batch LOADステートメントを使用してデータをバッチインポートするシナリオに適しています。

on-overwriteモードを設定した場合、START WITHまたはNEXTパラメーターは指定できません。

START WITH

マテリアライズドビューを自動的に完全に更新する最初の時点。 このパラメーターを指定しない場合は、現在の時点が使用されます。

説明

時間関数はサポートされており、秒まで正確でなければなりません。 ミリ秒は切り捨てられます。

マテリアライズドビューを更新する方法の詳細については、「マテリアライズドビューの更新」をご参照ください。

次へ

マテリアライズドビューを自動的に完全に更新する次の時点。 自動更新を有効にする場合は、NEXTパラメーターを指定する必要があります。

説明

時間関数はサポートされており、秒まで正確でなければなりません。 ミリ秒は切り捨てられます。

マテリアライズドビューを更新する方法の詳細については、「マテリアライズドビューの更新」をご参照ください。

クエリの書き直し

マテリアライズド・ビューのクエリ書き換え機能を有効または無効にします。 マテリアライズドビューでこの機能を有効にすると、クエリをマテリアライズドビューに書き直すことができます。 マテリアライズドビューをキャッシュとして使用できます。 有効な値:

  • DISABLE QUERY REWRITE: マテリアライズドビューのクエリ書き換え機能を無効にします。

  • ENABLE QUERY REWRITE: マテリアライズドビューのクエリ書き換え機能を有効にします。

説明

クエリ体

マテリアライズドビューのクエリ本体。テーブル、論理ビュー、またはマテリアライズドビューにすることができます。 以下の点にご注意ください。

  • クエリ結果の式列にエイリアスを指定する必要があります。 識別しやすいように、わかりやすいエイリアスを指定することをお勧めします。 たとえば、(SUM(price) AS total_price) は、SUM(price) 式列のエイリアスがtotal_priceであることを指定します。

  • マテリアライズドビューに含まれるベーステーブルを削除したり、ベーステーブルの列を削除または変更したりすることはできません。

  • WITH句を使用して、マテリアライズドビューをクエリできます。

制限事項

  • マテリアライズドビューでは、INSERTDELETEUPDATE操作を実行できません。

  • マテリアライズドビューに含まれるベーステーブルまたはベーステーブルの列を削除したり、名前を変更したりすることはできません。 ベーステーブルを変更する前に、マテリアライズドビューを削除する必要があります。

  • AnalyticDB for MySQLクラスターに作成できるマテリアライズドビューの最大数は、クラスターバージョンによって異なります。

    • V3.1.4.7以前のクラスター: 最大8つのマテリアライズドビュー。

    • V3.1.4.7以降のクラスター: 最大64のマテリアライズドビュー。

    説明

    クラスターのマイナーバージョンをクエリする方法については、AnalyticDB for MySQLクラスターのバージョンを照会するにはどうすればよいですか? クラスターのマイナーバージョンを更新するには、テクニカルサポートにお問い合わせください。

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

    MATERIALIZED VIEW myview1を作成する
    REFRESH NEXT now() + インターバル5分
    AS
    SELECT count(*) as cnt FROM base; 
  • 毎週月曜日の02:00:00に更新されるmyview2という名前のマテリアライズドビューを作成します。

    MATERIALIZED VIEW myview2を作成する
    リフレッシュ 
     START WITH DATE_FORMAT(now() + 間隔7-平日 (now()) 日、'% 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 base; 
  • 毎日02:00:00に更新されるmyview3という名前のマテリアライズドビューを作成します。

    MATERIALIZED VIEW myview3を作成する
    リフレッシュ 
     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 base; 
  • 毎月初日の02:00:00に更新されるmyview4という名前のマテリアライズドビューを作成します。

    MATERIALIZED VIEW myview4を作成する
    REFRESH NEXT DATE_FORMAT(last_day(now()) + 間隔1日、'% Y-% m-% d 02:00:00')
    AS
    SELECT count(*) as cnt FROM base; 
  • 1回だけ更新するmyview5という名前のマテリアライズドビューを作成します。

    MATERIALIZED VIEWを作成するmyview5
    REFRESH START WITH now() + インターバル1日
    AS
    SELECT count(*) as cnt FROM base; 
  • 自動更新を使用しないmyview6という名前のマテリアライズドビューを作成します。

    MATERIALIZED VIEW myview6を作成する (
      主要なキー (id)
    ) ハッシュによって分布 (id)
    AS
    SELECT id, name FROM base; 
  • 指定された列がインデックス付けされるmyview7という名前のマテリアライズドビューを作成します。 デフォルトでは、すべての列がインデックス付けされます。

    MATERIALIZED VIEW myview7を作成する (
      インデックス (名前) 、
      主要なキー (id)
    ) ハッシュによって分布 (id)
    AS
    SELECT id, name, age FROM base; 
  • パーティションキーとコメントが指定されたmyview8という名前のマテリアライズドビューを作成します。

    MATERIALIZED VIEW myview8を作成する (
      名前varchar(10) 、
      値double,
      キーINDEX_ID(id) コメント 'id' 、
      暗号化されたキーインデックス (名前、値) 、
      主要なキー (id)
    )
    ハッシュ (id) で分布
    PARTITION BY value(date_format(dat, "% Y % m % d")) LIFECYCLE 30
    コメント '材料化されたビューc'
    AS
    SELECT * ベースから; 

関連ドキュメント