当两个表具有相同的 dist 和 sort 键,但列名不同时,Redshift 是不是执行合并连接?
Posted
技术标签:
【中文标题】当两个表具有相同的 dist 和 sort 键,但列名不同时,Redshift 是不是执行合并连接?【英文标题】:Does Redshift perform a merge join when two tables have the same dist and sort keys, but the column names are different?当两个表具有相同的 dist 和 sort 键,但列名不同时,Redshift 是否执行合并连接? 【发布时间】:2016-07-22 00:17:39 【问题描述】:我有几个表具有相同的 DIST 和 SORT 键,但具有许多不同的列名。当 Redshift 连接表时,我是否仍会从合并连接中受益,还是取决于那些具有完全相同名称的列?
例如,假设我有表a
与DISTKEY
和SORTKEY
的user_id
;和b
与DISTKEY
和SORTKEY
的distinct_id
,其中distinct_id
和user_id
是相同的数据,它们只是名称不同。
SELECT a.user_id, a.col1, b.col2
FROM a JOIN b ON (a.user_id = b.distinct_id);
这会导致合并连接吗?
【问题讨论】:
【参考方案1】:是的!只要两个表中的数据都经过排序。您可以使用“Explain 'Your Query'”来检查查询是执行Hash join还是Merge join。
【讨论】:
以上是关于当两个表具有相同的 dist 和 sort 键,但列名不同时,Redshift 是不是执行合并连接?的主要内容,如果未能解决你的问题,请参考以下文章
Redshift - 重新设计表以使用 DIST 和 SORT 键(性能问题)
在 Redshift 中,如何复制表、添加 dist 和排序键以及保留列编码?
Rails 中具有相同键的两个表而不是 has_one 关系