我正在查看我在Redshift中做的一些查询的性能,并注意到我在文档中找不到的东西。Redshift没有执行合并连接与交错排序键
我创建了两个表之间有一个连接键(子表中的约10K行)。
对于父表,我们把它称为A,我有一个主键,我声明它是表的分隔键和排序键。我们称这个ID。
对于子表B,我创建了一个外键字段parent_id,它引用了A.id. parent_id已被声明为表B的distkey。表B还有一个主键,我定义的id。我在表B上为(parent_id,id)创建了一个交错排序键。
当我尝试做一个解释加入两个表时,我总是会得到一个哈希联接。如果我用正常的复合排序键重新创建表B,我将总是得到一个合并连接。
当我查看表格的统计信息时,我看不到任何偏差。
我的问题是,Redshift会不会总是使用带交错排序键的哈希连接,或者我做错了什么?
编辑 - 表B中交错排序键的顺序实际上是(parent_id,id)。我在上面写错了。我已经更新了上面的内容,现在已经清楚了。
我怀疑您的交错密钥导致问题的顺序。尝试先放入'parent_id'。 –
感谢您的回复。我实际上首先使用parent_id声明了表B - 我只是没有写上面的内容。我已经做了一个修改来澄清,因为合并连接仍然不会发生。 – rchawdry
嗯,当然,这似乎是'INTERLEAVED'的问题。每当我尝试过它时都会遇到问题(请查看Redshift论坛),所以我一直在远离它,除非我真的需要它。 –