我们拥有按公司ID分片的客户数据。也就是说,没有公司数据会与其他公司数据混合,所以这被选为distkey。
如果某个节点可能包含数千家公司,公司ID应该是sortkey中的第一列吗?或者distkey在开始扫描之前是否已经将数据限制在某个公司?
答案 0 :(得分:1)
Dist键不会影响每个节点/切片/块中存储行的顺序。排序键(或没有这样的自然顺序)defines the order。
如果您希望频繁查询company_id并希望获得最佳性能,请将company_id设为主排序键(COMPOUND或默认值,而不仅仅是INTERLEAVED)。
我还建议您熟悉SVL_QUERY_REPORT view。它可以告诉您是使用全扫描(或使用最佳排序键时的范围限制),针对哪些切片以及实际扫描了多少行。为相同的数据尝试不同的表格布局,不仅要查看查询时间,还要从此报告中确认Redshift可以执行您期望的操作。