本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
缓存表
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 关键字是可选的
参数
- 缓存表标识符
-
缓存表的名称。可以包括可选的数据库名称限定符。
- AS
-
根据查询结果创建和缓存新表时使用的关键字。
- query
-
定义要缓存的数据的 SELECT 语句或其他查询。
示例
在以下示例中,缓存的表将在整个查询中保留。缓存后,引用的后续查询cache_table_identifier将从缓存的版本中读取,而不是重新计算或从中sourceTable读取。这可以提高经常访问的数据的查询性能。
根据查询结果创建并缓存经过筛选的表
第一个示例演示如何根据查询结果创建和缓存新表。此命令在SELECT语句周围使用不带括号的AS关键字。它会创建一个名为 “cache_table_identifier” 的新表,其中仅包含状态为 sourceTable “” 的 “” 中的行active'。它运行查询,将结果存储在新表中,并缓存新表的内容。原始 “sourceTable” 保持不变,后续查询必须引用 “cache_table_identifier” 才能使用缓存的数据。
CACHE TABLEcache_table_identifierAS SELECT * FROMsourceTableWHERE status = 'active';
使用带括号的 SELECT 语句缓存查询结果
第二个示例演示如何使用括号将查询结果缓存为具有指定名称 (cache_table_identifier) 的新表。SELECT此命令创建一个名为 “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';