摘要:
SQL关于exists和in的区别和用法?1.exist,notexist一般都是与子查询一起使用.in可以与子查询一起使用,也可以直接in(a,b.....)。2.exist会针...
SQL关于exists和in的区别和用法?
1.exist,notexist一般都是与子查询一起使用.in可以与子查询一起使用,也可以直接in(a,b.....)。
2.exist会针对子查询的表使用索引.notexist会对主子查询都会使用索引.in与子查询一起使用的时候,只能针对主查询使用索引.notin则不会使用任何索引.注意,一直以来认为exists比in效率高的说法是不准确的。
图片来源:网络
in是把外表和内表作hash连接,而exists是对外表作loop循环,每次loop循环再对内表进行查询。
oraclenotexists和notin的区别csdn?
1、对于not exists查询,内表存在空值对查询结果没有影响;对于notin查询,内表存在空值将导致最终的查询结果为空。
2、对于notexists查询,外表存在空值,存在空值的那条记录最终会输出;对于notin查询,外表存在空值,存在空值的那条记录最终将被过滤,其他数据不受影响。
not in:做hash,对子查询表建立内存数组,用外表匹配,那子查询要是有NULL那外表没的匹配最终无值返回。