Vertica 表中的列数是否会影响查询性能?

尼古拉斯·里乌塞特

我们正在使用包含 500 列和 100 000 行的 Vertica 8.1 表。

即使在 Vertica 集群节点之一上直接使用 vsql 客户端(以消除任何网络延迟问题),执行以下查询也需要大约 1.5 秒:

SELECT COUNT(*) FROM MY_TABLE WHERE COL_132 IS NOT NULL and COL_26 = 'anotherValue'

但是在查询query_requests表时,request_duration_ms只有98ms,resource_acquisitions表没有显示资源获取有任何延迟。我不明白剩下的时间都花在哪里了。

如果我然后仅将查询使用的列导出到新表,并在这个新的、较小的表上运行查询,我会得到极快的响应,即使 query_requests 表仍然告诉我 request_duration_ms 大约是 98 毫秒。

所以看起来表中的列数会影响查询的执行时间,即使这些列中的大多数都没有被引用。我错了吗 ?如果是这样,为什么会这样?

提前致谢

莫妮卡·塞利奥

听起来您的查询正在针对包含所有表的(默认)超级投影运行。尽管 Vertica 是一个列式数据库(具有相关的压缩和编码),但您的查询可能仍然涉及比它需要的更多的数据。

您可以创建投影来优化您的查询。投影包含列的子集;如果有一个包含您的查询需要的所有列的可用列,那么查询将使用它而不是超级投影。(它比那复杂一点,因为物理位置也是一个因素,但这是基本思想。)您可以使用数据库设计器根据您的模式和示例查询创建一些初始投影,并随着时间的推移迭代改进它。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

vertica中的ALTER表

来自分类Dev

Vertica 查询性能调优

来自分类Dev

在vertica中汇总稀疏表

来自分类Dev

Vertica在PARTITION BY中的Unix时间

来自分类Dev

Vertica SQL中的Concat GROUP BY

来自分类Dev

Vertica SQL中的Concat GROUP BY

来自分类Dev

Vertica与PostgreSQL中不同的计算

来自分类Dev

在 Vertica 中解析 JSON Payload

来自分类Dev

表中的列数是否会影响没有索引的表上的count(*)查询的性能?

来自分类Dev

表中的列数是否会影响没有索引的表上的count(*)查询的性能?

来自分类Dev

添加列对vertica DB中超投影的影响

来自分类Dev

检查列是否存在并使用Vertica删除

来自分类Dev

Vertica中每组查询的前N个

来自分类Dev

通过vertica中的临时表设置变量

来自分类Dev

计算每个 JDBC Vertica 表中的行数

来自分类Dev

数据加载 SAS 到 Vertica 的性能问题

来自分类Dev

使用查询在HP Vertica中获取表的Creation-SQL

来自分类Dev

使用查询在HP Vertica中获取表的Creation-SQL

来自分类Dev

Vertica SQL - 包含子查询的 Agg 函数

来自分类Dev

Vertica数据库临时表

来自分类Dev

Vertica 将数据从文件加载到表

来自分类Dev

在Vertica中按月汇总数据

来自分类Dev

用jooQ在Vertica中编写UUID

来自分类Dev

Vertica DB中的独特约束

来自分类Dev

在Vertica中检查表细分

来自分类Dev

从Impala更新vertica中的巨大记录

来自分类Dev

Vertica中的最大列数和列长?

来自分类Dev

在配置投影时,Vertica DBD是否考虑内部查询?

来自分类Dev

如何查询Vertica中聚合的百分比