Amazon Redshift中的WHERE EXISTS和IN有什么区别?

4

我在Amazon Redshift上运行了两个版本的相同查询并进行了解释:

SELECT t1.column
FROM table1 t1
WHERE t1.column IN
(SELECT t2.column FROM table2 t2);

SELECT t1.column
FROM table1 t1
WHERE EXISTS
(SELECT 1 FROM table2 t2 WHERE t1.column = t2.column );

它们似乎具有相同的查询计划。这是否意味着,在编译查询之前,Redshift会以某种方式优化SQL输入,因此IN和WHERE EXISTS之间没有性能差异?


5
几乎所有现代优化器都会为exists查询和in查询生成相同的执行计划(如果可能的话)。 - user330315
感谢@a_horse_with_no_name! - Dawid
1个回答

0
如果两个查询具有相同的计划,则可能是Redshift在后台重写它以优化其中一个或两个语句。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接