首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >复合排序键与排序键

复合排序键与排序键
EN

Stack Overflow用户
提问于 2018-10-17 10:32:18
回答 2查看 3K关注 0票数 2

让我问其他关于红移键的问题。我们计划用WHERE语句中经常使用的列设置sortkey。

到目前为止,我们系统的最佳组合似乎是: DISTSTYLE偶数+复合SORTKEY +压缩列(第一个SortKey列除外)

只是想知道哪个更好,简单的SORTKEY还是复合SORTKEY,因为我们的BI表可以根据用户的分析进行多样化的查询。

例如,我们在几个查询的WHERE语句中根据频率设置复合排序键,如下所示。

代码语言:javascript
复制
COMPOUND SORTKEY
(
PURCHASE_DATE <-- set as first sort key since it's date column.
STORE_ID,
CUTOMER_ID,
PRODUCT_ID
)

但有时只能在实际查询中查询“产品ID”,而不能使用其他列出的排序键查询,也不能查询与复合密钥顺序不同的查询。

在这种情况下,我可以问‘复合SORTKEY’可以是无用的,或者简单的排序键可以更有效.?

如果你能告诉我你的想法和经验,我将不胜感激。

EN

回答 2

Stack Overflow用户

发布于 2018-10-17 11:32:05

Amazon Redshift的简单规则是:

  • 在与JOIN一起最常用的列上使用DISTKEY
  • 在最常与WHERE一起使用的列上使用SORTKEY

正确的是,只有当PURCHASE_DATE包含在WHERE中时,才会使用上面的复合排序键。

另一种方法是使用交错排序键,它给予许多列同等的权重,并且可以在WHERE中经常使用不同字段的情况下使用。然而,交错排序键比VACUUM慢得多,很少值得使用。

因此,目标是在大多数查询中使用SORTKEY,但是除非您有一些特殊的性能问题,否则不要太担心其他查询。

请参阅:红移排序键-选择最佳的排序风格

票数 6
EN

Stack Overflow用户

发布于 2018-10-17 13:53:59

在我看来,你的复合分类钥匙是明智的。重要的是要理解红移排序键是,而不是使用或不使用的索引。排序键用于物理地排列磁盘上的数据。

查询优化器“使用”排序键,在查询执行期间查看每个块的“区域映射”(min和max值)。这对于所有列都会发生,而不管它们是否在排序键中。

复合排序键中的辅助列仍然可以是非常,可以有效地减少必须从磁盘扫描的数据,特别是当列值为低基数时。

有关查询,请参见前面的示例,以检查排序键的有效性:我的分类钥匙被使用了吗?

请查阅我们的指南,以便有效地设计表格:亚马逊红移工程的高级表格设计剧本。本指南讨论了交错排序键的正确使用,但请注意,它们只应在非常特定的情况下使用。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52852787

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档