我试图了解Vertica数据库的工作原理,并想知道创建我的查询将使用的投影的最佳方法是什么。
vsql
行上编写代码来创建。我有点困惑,因为我手工创建它们(没有DB Designer),但是Vertica没有接缝来使用它们。
以下是一个例子:
我有表AAA(id, name, address
),我打算在其上运行此查询:
select count(name) from AAA;
为此我创建了一个名为proj1
的投影:
create projection proj1 as select name from AAA;
现在我有了我创建的投影,但是当我运行explain
表单时,我的选择计数脚本显示未使用创建的投影。
有谁能帮我理解这个问题?
答案 0 :(得分:1)
特定于查询的投影(不包含所有列)可能不包含所有行,这些行不会准确计算表中的记录。为了保证精确计算列/表中的行数,应使用超级投影。
查询特定投影与超级投影相比没有优势。您的查询仅处理“名称”列,并且元数据将能够像任何查询特定投影一样快速地从超级投影中提供该信息,同时确保计数准确性。
如果使用投影名称而不是表名运行查询,则会强制使用特定投影。您可以通过这种方式比较执行时间。