当两个表具有相同的 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 连接表时,我是否仍会从合并连接中受益,还是取决于那些具有完全相同名称的列?

例如,假设我有表aDISTKEYSORTKEYuser_id;和bDISTKEYSORTKEYdistinct_id,其中distinct_iduser_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 关系

NonUniqueDiscoveredSqlAliasException 当两个表具有相同的列名时

如何查询具有相同字段的两个表,仅当字段值相同时才返回id