Redshift join 与 varchar(40) 和 23 亿行

Posted

技术标签:

【中文标题】Redshift join 与 varchar(40) 和 23 亿行【英文标题】:Redshift join with varchar(40) and 2.3 billions rows 【发布时间】:2016-08-09 15:51:06 【问题描述】:

我是 Amazon Redshift 的新手。试图找出在 redshift 中加入两个表的最佳方法。 我有 1 个包含 23 亿条记录的表,id 列的数据类型为 varchar(40),带有排序键和 dist 键。 与在同一列 id 上具有 2300 万条记录的其他表进行左连接 - 排序键和分布键。 查询需要几个小时才能执行。我在这里做错了什么吗?

【问题讨论】:

【参考方案1】:

查看 STL_ALERT_EVENT_LOG 表是否有警报,您还可以在查询中使用“EXPLAIN”并检查您的查询是否通常使用最快的连接(合并连接)。您还应该识别具有数据倾斜或未排序行的表(请参阅 Redshift 文档)

【讨论】:

谢谢!我使用“解释”来确定使用的连接查询的类型,结果发现它使用的是哈希连接。执行真空,几乎花了 10 个小时,现在我在 5 分钟内得到结果。

以上是关于Redshift join 与 varchar(40) 和 23 亿行的主要内容,如果未能解决你的问题,请参考以下文章

有没有办法在 AWS Redshift 中将 VARCHAR 转换为 DATE?

在 Redshift 上混合使用 CROSS JOIN 和 LEFT JOIN

Redshift 通过重新建表修改varchar(60) 到varchar(90)

为啥 Redshift 在加入时会自动修剪 varchar 列?

从redshift sql中的varchar中提取值

在 Redshift 中拆分一个 varchar 列