在RedShift中进行反加入的最佳方法

时间:2016-03-07 00:56:31

标签: sql amazon-redshift

反连接是一种在一个表中获取与另一个表中不匹配的元组的方法。

我们可以通过多种方式实施反连接:

  • 相关子查询
  • 不相关的子查询
  • 外部加入并检查是否为空

哪个是在Redshift中执行反连接的最佳方式?在这种情况下,相关的子查询不是最优的,并且RedShift的查询引擎不会对该查询进行去相关。

2 个答案:

答案 0 :(得分:3)

如果没有实际的表格布局和统计数据以及实际查询,很难给出明确的答案。

我可以推测这种任务,需要在Redshift方面使用HashJoin。如果其中一个表不是太大,并且两个表具有相同的dist键,则可以在内存中有效地完成。外部加入Null检查然后听起来最合适,因为它是最可预测的 - 它会做到这一点。

但是实际的性能取决于很多因素,一旦你有表/查询就会更好地回来。

答案 1 :(得分:2)

正如@denismo所说,没有上下文就很难,但你可以尝试类似的东西:

SELECT ...
FROM a LEFT OUTER JOIN b USING(key)
WHERE b.key is null

它将返回一个行列表,其中的键不存在于