本文由簡體中文內容自動轉碼而成。阿里雲不保證此自動轉碼的準確性、完整性及時效性。本文内容請以簡體中文版本為準。

CREATE MATERIALIZED VIEW

更新時間:2024-06-29 21:41

本文介紹如何在雲資料庫ClickHouse中建立物化視圖。

建立物化視圖

文法:

CREATE MATERIALIZED VIEW [IF NOT EXISTS] [db.]Materialized_name [TO[db.]name] [ON CLUSTER cluster] 
ENGINE = engine_name()
ORDER BY expr 
[POPULATE] 
AS SELECT ...

參數說明:

參數

說明

參數

說明

db

資料庫的名稱,預設為當前選擇的資料庫,本文以default為例。

Materialized_name

物化視圖名。

TO[db.]name

將物化視圖的資料寫入到新表中。

說明

如果需要將物化視圖的資料寫入新表,不能使用POPULATE關鍵字。

[ON CLUSTER cluster]

在每一個節點上都建立一個物化視圖,固定為ON CLUSTER default

ENGINE = engine_name()

表引擎類型,具體請參見表引擎

[POPULATE]

POPULATE關鍵字。如果建立物化視圖時指定了POPULATE關鍵字,則在建立時將SELECT子句所指定的源表資料插入到物化視圖中。不指定POPULATE關鍵字時,物化視圖只會包含在物化視圖建立後新寫入源表的資料。

說明

一般不推薦使用POPULATE關鍵字,因為在物化視圖建立期間寫入源表的資料將不會寫入物化視圖中。

SELECT ...

SELECT子句。當資料寫入物化視圖中SELECT子句所指定的源表時,插入的資料會通過SELECT子句查詢進行轉換並將最終結果插入到物化視圖中。

說明

SELECT查詢可以包含DISTINCTGROUP BYORDER BYLIMIT等,但是相應的轉換是在每個插入資料區塊上獨立執行的。

樣本:

  1. 建立SELECT子句指定的源表。

    CREATE TABLE test ON CLUSTER default (
      id Int32,
      name String
    ) ENGINE = ReplicatedMergeTree()
        ORDER BY (id);
  2. 寫入資料至源表。

    INSERT INTO test VALUES(1,'a'),(2,'b'),(3,'c');
  3. 建立基於源表的物化視圖。

    CREATE MATERIALIZED VIEW test_view ON CLUSTER default
    ENGINE = MergeTree()
    ORDER BY (id) AS SELECT * FROM test;
  4. 查詢物化視圖,驗證未指定POPULATE關鍵字時,是否能查詢到物化視圖建立前寫入源表的資料。

    SELECT * FROM test_view;

    查詢資料為空白,說明未指定POPULATE關鍵字時,查詢不到物化視圖建立前寫入源表的資料。

  5. 寫入資料至源表。

    INSERT INTO test VALUES(4,'a'),(5,'b'),(6,'c');
  6. 查詢物化視圖。

    SELECT * FROM test_view;

    查詢結果如下。

    id│name
     ─│──
     4│ a
     5│ b 
     6│ c

參考文檔

建立物化視圖的更多資訊,請參見Create Materialized View

  • 本頁導讀 (1, M)
  • 建立物化視圖
  • 參考文檔
文檔反饋
phone 聯絡我們

立即和Alibaba Cloud在線服務人員進行交談,獲取您想了解的產品信息以及最新折扣。

alicare alicarealicarealicare