Amazon redshift 分类及;红移数据库中维度表的距离键选择

Amazon redshift 分类及;红移数据库中维度表的距离键选择,amazon-redshift,Amazon Redshift,在红移数据库中,我想在代理键和自然主键之间确定维度表的排序键。该定义称“在筛选、排序或分组数据时,应根据最常用的列选择排序键”。 我的问题是— 我有一个Employee表(Emp_key,Emp_Id,Emp_name),该表与Emp key上的事实表连接。这里,“Emp_密钥”是代理密钥,“Emp_id”是自然主键。我过滤了Emp_id上的查询,但是事实表中的“Emp_key”被定义为“dist key”,并且读到,对于大维度,在连接键上定义sort&dist key会产生更好的性能,因此我想

在红移数据库中,我想在代理键和自然主键之间确定维度表的排序键。该定义称“在筛选、排序或分组数据时,应根据最常用的列选择排序键”。 我的问题是—

我有一个Employee表(Emp_key,Emp_Id,Emp_name),该表与Emp key上的事实表连接。这里,“Emp_密钥”是代理密钥,“Emp_id”是自然主键。我过滤了Emp_id上的查询,但是事实表中的“Emp_key”被定义为“dist key”,并且读到,对于大维度,在连接键上定义sort&dist key会产生更好的性能,因此我想知道在维度表中的sort key的Emp_key和Emp_id之间应该选择哪一个

另外,另一个混淆是在“date\u key”和“ignore defining sort key”之间为“date”维度表选择sort

我将感谢你在这方面的建议


谢谢大家!

您的employee表可能没有太多行,您可以选择
ALL
分发样式,因此表的副本位于集群的每个节点上。这样,您将以非常低的成本避免这种困境

UPD:在这种设计中,我将emp_键作为dist键(以便连接的数据位于相同的节点上),emp_id作为排序键(以便有效地过滤)。我很确定查询计划器会优先考虑过滤而不是连接,因此首先它会过滤维度表中的行,然后才连接事实表中相应的行。但最好尝试所有选项,并对一些查询进行基准测试,看看哪些查询最有效


如果您可以更改设计,我只需将emp_id添加到事实表中(因为它看起来像是键映射1到1),作为ELT的一部分,避免再次陷入困境。

谢谢您的回复!Employee表只是我提供的一个示例。但我有一个大的维度表,我想知道在代理键和自然主键之间选择哪个键作为排序键。谢谢谢谢亚历克斯的澄清!那有帮助!您能推荐“日期”维度的最佳排序和距离样式吗?非常感谢。它是一个日期维度,并在“date_key”上连接到事实表。@varun是的,但使用单独的键而不是将date列本身用作键有什么好处?date_key这里是一个代理键,它采用整数格式,而不是按原样使用日期。这是一个典型的星型模式设计。