本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
CACHE 資料表
CACHE TABLE 命令會快取現有資料表的資料,或建立和快取包含查詢結果的新資料表。
注意
快取的資料會在整個查詢中保留。
語法、引數和一些範例來自 Apache Spark SQL 參考
語法
CACHE TABLE 命令支援三種語法模式:
使用 AS (不含括號):根據查詢結果建立和快取新資料表。
CACHE TABLEcache_table_identifierASquery;
使用 AS 和括號:函數與第一個語法類似,但使用括號明確分組查詢。
CACHE TABLEcache_table_identifierAS (query);
不使用 AS:使用 SELECT 陳述式來篩選要快取的資料列,以快取現有的資料表。
CACHE TABLEcache_table_identifierquery;
其中:
-
所有陳述式應以分號 (;) 結尾
-
query通常是 SELECT 陳述式 -
查詢的括號是選用的 AS
-
AS 關鍵字為選用
參數
- cache_table_identifier
-
快取資料表的名稱。可以包含選用的資料庫名稱限定詞。
- AS
-
從查詢結果建立和快取新資料表時使用的關鍵字。
- query
-
SELECT 陳述式或其他查詢,定義要快取的資料。
範例
在下列範例中,快取的資料表會針對整個查詢持續存在。快取後,參考 cache_table_identifier 的後續查詢將從快取版本讀取,而不是重新計算或讀取 sourceTable。這可以改善經常存取資料的查詢效能。
從查詢結果建立和快取篩選的資料表
第一個範例示範如何從查詢結果建立和快取新資料表。此命令使用AS關鍵字,而沒有SELECT陳述式的括號。它會建立一個名為 'cache_table_identifier' 的新資料表,只包含來自 'sourceTable' 的資料列,其中狀態為 'active'。它會執行查詢、將結果存放在新資料表中,以及快取新資料表的內容。原始 'sourceTable' 保持不變,後續查詢必須參考 'cache_table_identifier' 才能使用快取的資料。
CACHE TABLEcache_table_identifierAS SELECT * FROMsourceTableWHERE status = 'active';
使用括號 SELECT 陳述式快取查詢結果
第二個範例示範如何在 SELECT 陳述式周圍使用括號,將查詢的結果快取為具有指定名稱 (cache_table_identifier) 的新資料表。此命令會建立一個名為 'cache_table_identifier' 的新資料表,只包含來自 'sourceTable' 的資料列,其中狀態為 'active'。它會執行查詢、將結果存放在新資料表中,以及快取新資料表的內容。原始 'sourceTable' 保持不變。後續查詢必須參考「cache_table_identifier」才能使用快取的資料。
CACHE TABLEcache_table_identifierAS ( SELECT * FROMsourceTableWHERE status = 'active' );
快取具有篩選條件的現有資料表
第三個範例示範如何使用不同的語法快取現有的資料表。此語法會省略 'AS' 關鍵字和括號,通常會從名為 'cache_table_identifier' 的現有資料表快取指定的資料列,而不是建立新的資料表。SELECT 陳述式做為篩選條件,以決定要快取的資料列。
注意
此語法的確切行為因資料庫系統而異。請務必驗證特定 AWS 服務的正確語法。
CACHE TABLEcache_table_identifierSELECT * FROMsourceTableWHERE status = 'active';