An Explain Plan
会告诉您为什么要使用
Exists。通常问题来了
Exists vs Count(*)。
Exists是比较快的。为什么?
关于NULL带来的挑战:当 子查询返回时
Null
,对于IN,整个查询变为Null
。因此,您也需要处理。但是使用Exist
,它只是一个false
。轻松应对。根本IN
无法与之相比,Null
但是Exists
可以。例如,
Exists (Select * from yourtable where bla = 'blabla');
一旦 找到/匹配匹配项, 您就会得到true / false 。在这种情况下,
IN
sort会根据的位置Count(*)
选择 所有 匹配的行,WHERe
因为它正在比较所有值。
但也不要忘记这一点:
EXISTS``IN
当子查询结果非常大时,针对:高速执行。IN
领先于EXISTS
:子查询结果非常小时。
参考以获取更多详细信息:
- 使用IN的子查询。
- IN-子查询优化
- 加入与子查询。



