摘要:
数据库中IN和EXISTS有什么区别?没有什么区别,两者都是包含的意思,但是esists的效率比in要高。建议别用in,影响效率,如果只有两三个条件,就用or代替,如果值比较多,就...
数据库中IN和EXISTS有什么区别?
没有什么区别,两者都是包含的意思,但是esists的效率比in要高。建议别用in,影响效率,如果只有两三个条件,就用or代替,如果值比较多,就用exists.例如select*fromtablewhere(name='1'orname='2')别写成namein('1','2')如果数据量比较大select*fromtablewherenameexists(selectnamefromtable2);
图片来源:网络
oraclenotexists和notin的区别csdn?
1、对于not exists查询,内表存在空值对查询结果没有影响;对于notin查询,内表存在空值将导致最终的查询结果为空。
2、对于notexists查询,外表存在空值,存在空值的那条记录最终会输出;对于notin查询,外表存在空值,存在空值的那条记录最终将被过滤,其他数据不受影响。
not in:做hash,对子查询表建立内存数组,用外表匹配,那子查询要是有NULL那外表没的匹配最终无值返回。