【发布时间】:2018-06-11 14:29:32
【问题描述】:
我在 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 输入?
【问题讨论】:
-
几乎每个现代优化器都会为
exists和in查询生成相同的计划(如果可能) -
谢谢@a_horse_with_no_name!
标签: sql amazon-redshift