投影类型
Vertica 表通常具有多个投影,每个投影都定义为包含不同的内容。对于给定表,投影内容的范围和组织可能会有所不同。这些差异通常可以分为以下几种投影类型:
超投影
对于数据库中的每个表,Vertica 需要至少一个包含表中所有列的超投影。在没有查询特定投影的情况下,Vertica 使用表的超投影,它可以支持任何查询和 DML 操作。
在某些条件下,Vertica 会在创建表时立即自动创建表的超投影。首次向该表加载数据时,如果其中不存在超投影,Vertica 还将创建一个超投影。
CREATE PROJECTION
如果它指定包括所有表列,则可以创建超投影。一个表可以有多个超投影。
虽然超投影可以支持对表的所有查询,但它们并不能促进特定查询的最佳执行。
查询特定的投影
查询特定的投影是仅包含处理给定查询所需的表列子集的投影。查询特定的投影可显著提高查询的性能,因为已针对查询优化这些投影。
聚合投影
当使用已包含聚合数据的投影时,包括表达式或聚合函数(例如 SUM 和 COUNT)的查询可以更有效地执行。对于涉及大量数据的查询,情况更是如此。
Vertica 提供几种类型的投影来存储从聚合函数或表达式中返回的数据。
-
Top-K 投影:一种实时聚合投影,用于从选定行的一个分区中返回前 k 行。创建一个满足 Top-K 查询条件的 Top-K 投影。
-
预聚合 UDTF 结果的投影:调用用户定义的转换函数 (UDTF) 的实时聚合投影。为了在查询这种类型的投影时最大限度降低开销,Vertica 会在后台处理 UDTF 函数,并将其结果存储在磁盘上。
-
包含表达式的投影:具有通过锚表列计算列值的列的投影。
有关详细信息,请参阅投影中的预聚合数据。