如果我在两个表之间连接,A和B,具有多个等式约束,有什么方法可以提示Redshift,它应该用来分发连接吗?例如,在:
FROM A
JOIN B
ON B.id = A.b_id
AND B.x = some_expression_of(A.x)在我的情况下,我知道所有的数据都是由这个X表达式分发的,所以如果Redshift按它分发,就不会有任何实际的网络活动。
编辑:下面是一个更有代表性的联接版本:
FROM order_products --distribution key: user_id
FULL OUTER JOIN order_payments --distribution key: user_id
ON FALSE
LEFT JOIN orders --distribution key: user_id
ON orders.id = COALESCE(order_products.order_id, order_payments.order_id)
AND orders.user_id = COALESCE(order_products.user_id, order_payments.user_id)我想要的是能够告诉Redshift请根据user_id分发最后一个连接( Redshift可能被归类为DS_DIST_BOTH,但实际上不会导致网络重新分配)
发布于 2017-07-05 12:26:38
您不能像Oracle一样在Redshift中使用提示。您可以进行设置分发密钥之类的操作。如果X总是以这种方式使用,那么将它合并到您的DDL中可能是有意义的。
见此处:http://docs.aws.amazon.com/redshift/latest/dg/t_分配_data.html
https://dba.stackexchange.com/questions/178006
复制相似问题