我了解Greenplum数据库将根据表分配键将数据分为不同的段。而且,在documentation中说:
要实现通常联接在一起的大表的本地联接,请将表分布在同一列上。
假设有如下表:
因此,如果我同时通过(a,b)分发T_1,那么我应该如何分发T_2和T_3以实现最大的连接本地化?
您不能以与T_1相同的方式分发T_2和T_3,因为您丢失了每个表中的列。
在您的情况下,您可以通过(a)分配T_1优化T_2,或者通过(b)分配T_1优化T_3。而且您还必须使用相同的数据类型。