如题..

解决方案 »

  1.   

    一般用exists效率要高些不过在特殊情况下,in要高些。
      

  2.   


    执行效率,可以用EXPLAN PLAN查看SQL的效率,cost 越低越好..可以在执行时间上反应出来,一条SQL可以执行几分钟,优化后可能就几秒. 时间少了就是效率的提高..
      

  3.   

    select * from a
      where not exists(
        select 1 from b
          where col1=a.col1)
    当b表中数据集较大的时候,not exists效率比not in高
    因为只是验证存在性,select 1即可,1换成0,'a',2.。等等都无所谓
      

  4.   

    not in是确定的才能使用啊,exists是一个不确定的,没法比
      

  5.   

    一般情况下外大内小用in(外不表的记录比较多,内部表的记录比较少),反之用exists。
      

  6.   

    用in 会进行全表扫描  
    exists 不会
    索引exists 效率高与in
      

  7.   

    EXISTS引出的是相关子查询,它只关心内层查询是否有返回值,并不需要查找具体值,它的开销主要是外层每取一次记录,内层查询就得执行一次;而IN 是不相关子查询,它首先得把子查询的结果保存起来,它的开销主要是外层查询每次取一条记录,都要与子查询的结果进行比较。由此可以看出,一般情况下,如果内层的结果比较简单,比如只有几个值,则应该选择IN子查询;否则用EXIST。二者并没有太大的差别,只是因情况而定,可以在的DBMS上进行测试后决定使用哪种方法。
      

  8.   

      呵呵,听说就是这个,近日单位系统某些查询语句显得慢了,结果改用了 exists 或not exists 部分结果显示时快了。