让我问其他关于红移键的问题。我们计划用WHERE语句中经常使用的列设置sortkey。
到目前为止,我们系统的最佳组合似乎是: DISTSTYLE偶数+复合SORTKEY +压缩列(第一个SortKey列除外)
只是想知道哪个更好,简单的SORTKEY还是复合SORTKEY,因为我们的BI表可以根据用户的分析进行多样化的查询。
例如,我们在几个查询的WHERE语句中根据频率设置复合排序键,如下所示。
COMPOUND SORTKEY
(
PURCHASE_DATE <-- set as first sort key since it's date column.
STORE_ID,
CUTOMER_ID,
PRODUCT_ID
)但有时只能在实际查询中查询“产品ID”,而不能使用其他列出的排序键查询,也不能查询与复合密钥顺序不同的查询。
在这种情况下,我可以问‘复合SORTKEY’可以是无用的,或者简单的排序键可以更有效.?
如果你能告诉我你的想法和经验,我将不胜感激。
发布于 2018-10-17 11:32:05
Amazon Redshift的简单规则是:
JOIN一起最常用的列上使用DISTKEYWHERE一起使用的列上使用SORTKEY正确的是,只有当PURCHASE_DATE包含在WHERE中时,才会使用上面的复合排序键。
另一种方法是使用交错排序键,它给予许多列同等的权重,并且可以在WHERE中经常使用不同字段的情况下使用。然而,交错排序键比VACUUM慢得多,很少值得使用。
因此,目标是在大多数查询中使用SORTKEY,但是除非您有一些特殊的性能问题,否则不要太担心其他查询。
请参阅:红移排序键-选择最佳的排序风格
发布于 2018-10-17 13:53:59
在我看来,你的复合分类钥匙是明智的。重要的是要理解红移排序键是,而不是使用或不使用的索引。排序键用于物理地排列磁盘上的数据。
查询优化器“使用”排序键,在查询执行期间查看每个块的“区域映射”(min和max值)。这对于所有列都会发生,而不管它们是否在排序键中。
复合排序键中的辅助列仍然可以是非常,可以有效地减少必须从磁盘扫描的数据,特别是当列值为低基数时。
有关查询,请参见前面的示例,以检查排序键的有效性:我的分类钥匙被使用了吗?
请查阅我们的指南,以便有效地设计表格:亚马逊红移工程的高级表格设计剧本。本指南讨论了交错排序键的正确使用,但请注意,它们只应在非常特定的情况下使用。
https://stackoverflow.com/questions/52852787
复制相似问题