我在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之间没有性能差异?
exists
查询和in
查询生成相同的执行计划(如果可能的话)。 - user330315