- 从两者依据的对象来区分:
IN/NOT IN
是针对于集合返回结果来进行操作的;(单行<-->集合)效率低!容易理解,分析简单。
EXISTS/NOT EXISTS
是针对于条件的返回结果来进行操作的。(集合<-->集合)效率高!需要仔细分析,避免写错!
- 操作流程:
IN/NOT IN
获取一条记录中的条件字段,将该条件字段的值放入到一个集合中去跟集合的所有去比较,如果该集合有这个值,那么返回一个真,否则返回假。
1 ------> n
2 ------> n
3 ------> n
.
.
.
EXISTS/NOT EXISTS
获取条件字段的集合,将该集合直接与目标集合进行对比,返回结果集合,结果集有值则为真,没有值为假。
m<n 且
m/n ------->x 一次搞定,