Redshift:在大型varchar列中有大量空值/空值的缺点

时间:2017-11-10 17:07:05

标签: database amazon-web-services amazon-redshift varchar

我的redshift表中有一个最大为20,000的varchar列。大约60%的行将此列作为null或空。在这种情况下,性能影响是什么。 从this文档我读到:

  

因为Amazon Redshift非常有效地压缩列数据,   创建比必要大得多的列对其影响最小   数据表的大小。但是,在处理复杂查询期间,   中间查询结果可能需要临时存储   表。因为不会不必要地压缩临时表   大列消耗过多的内存和临时磁盘空间   会影响查询效果。

所以这意味着在这种情况下查询性能可能会很差。除此之外还有其他缺点吗?

1 个答案:

答案 0 :(得分:2)

要存储在红移表中,文档中没有显着的性能下降,压缩编码有助于保持数据紧凑。

而当您使用空值查询列时,需要额外的处理,例如,在where子句中使用它。这可能会影响查询的性能。因此,性能取决于您的查询。

编辑(回答您的评论) - Redshift将您的每一列存储在“块”中,并根据您指定的排序键对这些块进行排序。 Redshift记录每个块的最小值/最大值,并且可以跳过任何不包含要返回的数据的块。查询特定列的磁盘空间,并检查其他列的大小。

如果我做了一个错误的假设,请发表评论,我将重新调整我的答案。