复合排序键与排序键

Sac*_*iko 3 amazon-web-services amazon-redshift

让我问有关 redshift sortkey 的其他问题。我们计划使用 WHERE 语句中经常使用的列来设置排序键。

到目前为止,我们系统的最佳组合似乎是:DISTSTYLE EVEN + COMPOUND SORTKEY + COMPRESSED Column(第一个 SortKey 列除外)

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

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

COMPOUND SORTKEY
(
PURCHASE_DATE <-- set as first sort key since it's date column.
STORE_ID,
CUTOMER_ID,
PRODUCT_ID
)
Run Code Online (Sandbox Code Playgroud)

但有时在实际查询中只能查询“Product ID”,不能与其他列出的排序键一起查询,也不能与COMPOUND KEY顺序不同进行查询。

那么,请问“COMPOUND SORTKEY”可能没用,还是简单的SORT KEY更有效......?

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

Joh*_*ein 7

Amazon Redshift 的简单规则是:

  • 在最常使用的列上使用 DISTKEYJOIN
  • 对最常使用的列使用 SORTKEYWHERE

您是正确的,只有包含PURCHASE_DATEWHERE.

另一种方法是使用交错排序键,它为许多列提供相同的权重,并且可以在 .NET 中经常使用不同字段的地方使用WHERE。然而,交错排序键速度慢得多,VACUUM而且很少值得使用。

因此,目标是在大多数查询上使用 SORTKEY ,但不要太担心其他查询,除非遇到一些特定的性能问题。

请参阅:Redshift 排序键 - 选择最佳排序样式 | 赫沃博客