Amazon web services 复合排序键与排序键
让我问另一个关于红移排序键的问题。 我们计划使用WHERE语句中经常使用的列来设置sortkey 到目前为止,我们系统的最佳组合似乎是: DISTSTYLE偶数+复合排序键+压缩列(第一个排序键列除外) 只是想知道对于我们的BI表,简单的SORTKEY或复合的SORTKEY哪个更好,根据用户的分析,BI表可以有多种查询 例如,我们根据几个查询的WHERE语句中的频率设置复合sortkey,如下所示Amazon web services 复合排序键与排序键,amazon-web-services,amazon-redshift,Amazon Web Services,Amazon Redshift,让我问另一个关于红移排序键的问题。 我们计划使用WHERE语句中经常使用的列来设置sortkey 到目前为止,我们系统的最佳组合似乎是: DISTSTYLE偶数+复合排序键+压缩列(第一个排序键列除外) 只是想知道对于我们的BI表,简单的SORTKEY或复合的SORTKEY哪个更好,根据用户的分析,BI表可以有多种查询 例如,我们根据几个查询的WHERE语句中的频率设置复合sortkey,如下所示 COMPOUND SORTKEY ( PURCHASE_DATE <-- set as fi
COMPOUND SORTKEY
(
PURCHASE_DATE <-- set as first sort key since it's date column.
STORE_ID,
CUTOMER_ID,
PRODUCT_ID
)
复合排序键
(
购买日期亚马逊红移的简单规则如下:
- 在最常与
JOIN一起使用的列上使用DISTKEY
- 在最常与
一起使用的列上使用SORTKEY,其中
如果的WHERE
中包含购买日期
,则只会使用上述复合排序键,这是正确的
另一种选择是使用交错排序键,它为许多列提供相等的权重,并且可以在中经常使用不同字段的地方使用。但是,交错排序键比真空
慢得多,很少值得使用
因此,尽量在大多数查询中使用SORTKEY,但不要太担心其他查询,除非您遇到某些特定的性能问题
请参阅:亚马逊红移的简单规则如下:
- 在最常与
JOIN一起使用的列上使用DISTKEY
- 在最常与
一起使用的列上使用SORTKEY,其中
如果的WHERE
中包含购买日期
,则只会使用上述复合排序键,这是正确的
另一种选择是使用交错排序键,它为许多列提供相等的权重,并且可以在中经常使用不同字段的地方使用。但是,交错排序键比真空
慢得多,很少值得使用
因此,尽量在大多数查询中使用SORTKEY,但不要太担心其他查询,除非您遇到某些特定的性能问题
请参阅:您的复合排序键在我看来是合理的。重要的是要了解红移排序键是而不是使用或未使用的索引。排序键用于物理排列磁盘上的数据
查询优化器在查询执行过程中通过查看每个块的“区域映射”(最小值和最大值)来“使用”排序键。无论是否在排序键中,所有列都会发生这种情况
复合排序键中的辅助列在减少必须从磁盘扫描的数据方面仍然非常有效,尤其是当列值的基数较低时
有关检查排序键有效性的查询,请参见上一个示例:
请阅读我们关于有效设计表的指南:。该指南讨论了交错排序键的正确使用,但请注意,它们只应在非常特定的情况下使用。我认为您的复合排序键是合理的。重要的是要理解红移排序键是而不是所使用的索引未使用。排序键用于物理排列磁盘上的数据
查询优化器在查询执行过程中通过查看每个块的“区域映射”(最小值和最大值)来“使用”排序键。无论是否在排序键中,所有列都会发生这种情况
复合排序键中的辅助列在减少必须从磁盘扫描的数据方面仍然非常有效,尤其是当列值的基数较低时
有关检查排序键有效性的查询,请参见上一个示例:
请阅读我们有效设计表的指南:。该指南讨论了交错排序键的正确使用,但请注意,它们只应在非常特殊的情况下使用。再次感谢,@John Rotenstein。感谢您的链接,我现在了解了交错排序键的用法。我们正在进一步验证我们的系统没有合适的DIST/SORTKEY组合。再次感谢,@John Rotenstein。感谢您的链接,我现在了解了交错排序键的情况。我们正在进一步验证DIST/SORTKEY组合是否适合我们的系统。再次感谢您的有用指导,@Joe Harris。我得到了reli我听说辅助列非常有用,尤其是它们的基数很低,因为我们的BI系统应该尽可能确保查询的多样性。我回顾了您介绍的剧本,并再次验证了我们的系统。我真的很感谢您的有用指导,@Joe Harris。听到辅助列非常有用,我感到很欣慰stll非常有用,特别是它们的基数很低,因为我们的BI系统应该尽可能确保查询的多样性。我回顾了您介绍的剧本,并再次验证了我们的系统。