【发布时间】:2010-10-20 03:44:33
【问题描述】:
在为this question 准备答案后,我发现我无法验证我的答案。
在我的第一份编程工作中,有人告诉我,IN () 谓词内的查询会针对父查询中包含的每一行执行,因此应避免使用 IN。
例如,给定查询:
SELECT count(*) FROM Table1 WHERE Table1Id NOT IN (
SELECT Table1Id FROM Table2 WHERE id_user = 1)
表 1 行 | # 次“IN”执行
----------------------------------
10 | 10
100 | 100
1000 | 1000
10000 | 10000
这是正确的吗? IN 谓词实际上是如何工作的?
【问题讨论】:
-
非常好的问题。没有看到很多问题要求详细说明 SQL 中的某些内容实际上是如何工作的。很多时候,人们更关心的是获得他们想要的结果。
标签: sql performance optimization