Redshift SQL:检查同一组值是否在 table 的两个不同列中

Redshift SQL: Check if same set of values are IN and NOT IN two different columns of table

我正在 运行 查找大型 Redshift table(PB),其中一组 5,000 个名称位于名为 BUYERS 的列中,而不在名为 SELLERS 的列中。目标是排除购买是内部转移的行(即买方不是卖方)。

我很好奇是否有比以下方法更有效的方法

buyers in ('EXAMPLE 1','EXAMPLE 2') and sellers not in ('EXAMPLE 1','EXAMPLE 2')

“WHERE NOT IN”会导致执行效率低下,但这太简单了,我希望 Redshift 查询编译器应该优化这段代码。如果“IN”列表变长,这会变得非常慢。通常“WHERE NOT EXIST”比“WHERE NOT IN”更有效,但同样在这种简单的情况下,它应该很明显。

对于这种简单的东西(2 个值),您可以尝试 -

buyers in ('EXAMPLE 1','EXAMPLE 2') and sellers <> 'EXAMPLE 1' and sellers <> 'EXAMPLE 2'

看看有没有加速。我希望这不会有什么不同。