我在Amazon Redshift中对同一查询的两个版本运行EXPLAIN:
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 );
他们似乎有相同的查询计划。这是否意味着IN和WHERE EXISTS之间没有性能差异,因为Redshift在编译查询之前以某种方式优化了SQL输入?
答案 0 :(得分:0)
如果两个查询具有相同的计划,则 Redshift 可能会在后面重写它以优化其中一个或两个语句。