-1

我正在尝试了解 Vertica DB 的工作原理,并想知道创建将由我的查询使用的投影的最佳方法是什么。

  1. 我知道我可以通过编写代码来创建就vsql行了。
  2. 提供将用于 Vertica 数据库设计器的查询,以便 Vertica 为其自身创建正确的投影。

我有点困惑,因为我是手动创建的(没有 DB Designer),但 Vertica 并没有使用它们。

这是一个例子:

  • 我有表 AAA ( id, name, address),我打算在它上面运行这个查询:

    select count(name) from AAA;

  • 为此,我正在创建一个名为proj1

    create projection proj1 as select name from AAA;

  • 现在我有了创建的投影,但是当我运行explain表单时,我的选择计数脚本显示未使用创建的投影。

谁能帮我理解这里的问题?

4

1 回答 1

1

查询特定的投影(不包含所有列)可能不包含所有行,这不会给出表中记录的准确计数。为了保证准确计算列/表中的行数,应使用超投影。

该查询特定投影与反对超级投影相比没有优势。您的查询仅处理“名称”列,元数据将能够像任何查询特定投影一样快速地从超级投影中提供该信息,同时确保计数准确性。

如果您使用投影名称而不是表名称运行查询,它将强制使用特定的投影。您可以通过这种方式比较执行时间。

于 2012-07-18T20:05:07.593 回答