投影类型

Vertica 表通常具有多个投影,每个投影都定义为包含不同的内容。对于给定表,投影内容的范围和组织可能会有所不同。这些差异通常可以分为以下几种投影类型:

超投影

对于数据库中的每个表,Vertica 需要至少一个包含表中所有列的超投影。在没有查询特定投影的情况下,Vertica 使用表的超投影,它可以支持任何查询和 DML 操作。

在某些条件下,Vertica 会在创建表时立即自动创建表的超投影。首次向该表加载数据时,如果其中不存在超投影,Vertica 还将创建一个超投影。 CREATE PROJECTION 如果它指定包括所有表列,则可以创建超投影。一个表可以有多个超投影。

虽然超投影可以支持对表的所有查询,但它们并不能促进特定查询的最佳执行。

查询特定的投影

查询特定的投影是仅包含处理给定查询所需的表列子集的投影。查询特定的投影可显著提高查询的性能,因为已针对查询优化这些投影。

聚合投影

当使用已包含聚合数据的投影时,包括表达式或聚合函数(例如 SUMCOUNT)的查询可以更有效地执行。对于涉及大量数据的查询,情况更是如此。

Vertica 提供几种类型的投影来存储从聚合函数或表达式中返回的数据。

  • 实时聚合投影:包含通过锚表中的列聚合列值的列的投影。您还可以定义包括 用户定义的变换函数 的实时聚合投影。

  • Top-K 投影:一种实时聚合投影,用于从选定行的一个分区中返回前 k 行。创建一个满足 Top-K 查询条件的 Top-K 投影。

  • 预聚合 UDTF 结果的投影:调用用户定义的转换函数 (UDTF) 的实时聚合投影。为了在查询这种类型的投影时最大限度降低开销,Vertica 会在后台处理 UDTF 函数,并将其结果存储在磁盘上。

  • 包含表达式的投影:具有通过锚表列计算列值的列的投影。

有关详细信息,请参阅投影中的预聚合数据