用于联接的Redshift排序键

时间:2018-10-30 09:09:34

标签: amazon-redshift

我已经阅读了各种帖子,但仍不清楚。对于星型模式,我会认为,如果我从维度表(例如d_article)中进行查询,最终会得到一组用于查询/探测主事实表的SK(sk_article)。因此,在该暗表的Where子句中常用的字段上设置排序键是有意义的。

下一步...这是我找不到的示例或答案...我应该在事实表的排序键中包含sk_article吗?更具体地说,由于我们并不总是使用相同的SK来加入事实表,因此我应该为所有各种SK创建一个交错的排序键吗?

我没有看到仅在Joins中使用排序键的引用。

https://docs.aws.amazon.com/redshift/latest/dg/c_best-practices-sort-key.html

Amazon Redshift Foreign Keys - Sort or Interleaved Keys

1 个答案:

答案 0 :(得分:0)

  

Redshift排序键

排序键仅用于排序目的,而不用于连接目的。可以有多个列定义为“排序键”。可以使用这些列对表中存储的数据进行排序。查询优化器在确定最佳查询计划时会使用此排序表。

而且,正如托尼所说的

排序键主要用于优化区域图的有效性(类似于BRIN索引)并启用范围受限的扫描。它们在大多数维度表中并不是很有用,因为维度表通常很小。排序键唯一有助于提高联接性能的情况是,如果您为合并联接设置了所有内容,则通常仅对大型事实事实表联接有意义。交错键更像是一种特殊情况的排序键,对任何连接都无济于事。

这些键的每种类型都有特定的用途。 This对您来说可能是一本好书。

对于联接表,事实表和维度表,您应该使用分配键。

  

Redshift分配键(DIST键)

它确定数据在Redshift中的存储位置。群集从根本上跨计算节点存储数据。当大量数据存储在单个节点上时,查询性能会受到影响。 Here很适合您阅读。

我希望这能回答您的问题。

这里的video很好,对理解SORT VS DIST密钥确实很有帮助。