【发布时间】:2021-05-12 08:20:44
【问题描述】:
我在 Redshift 中有一个视图,它由许多相互连接(链接)的 CTE 组成。在这些 CTE 中,多个表之间存在连接。如果我然后加入一个 CTE,该 CTE 有多个表的连接,连接的 SORT KEY 和 DIST KEY 来自哪里? Redshift如何决定CTE中join的哪个表,CTE应该继承它的DIST KEY和SORT KEY?如果有的话?
例如,tbl1 在 tbl_key 上有一个 DIST KEY,tbl2 在 tbl_id 上有一个 DIST KEY,tbl3 在 tbl_key 上有一个 DIST KEY。
首先,我创建一个 CTE,它是 tbl1 和 tbl2 的连接。
With cte1 as (
Select tbl1.col1, tbl2.col2
From tbl1
Join tbl2 on tbl1.job_no = tbl2.job_id )
其次,我创建一个连接到第一个 CTE 的 CTE
With cte2 as (
Select cte1.*, tbl3.col3
From cte1
Join tbl3 using (tbl_key))
现在我的问题是,CTE1 在 tbl1 的 tbl_key 的 DIST KEY 或 tbl2 的 tbl_id 的 DIST KEY 上是否有 DIST KEY?或两者?还是两者都没有?
【问题讨论】:
标签: view amazon-redshift common-table-expression