表A有三个字段name,varchar2(32); school, varchar2(32); achievement, number(10,1), A表有10000条记录,B表有500000条记录,若B与A关联查询,用not exists 还是 not in?
 
关键是谁能解释下原因,谢谢!

解决方案 »

  1.   

    not exists 
    not in 的效率太低了
      

  2.   

    数据量小的情况下区别不大,大数据量表建议使用exists。
      

  3.   


    not in内外表都进行全表扫描,没有用到索引;
    not extsts 的子查询能用到表上的索引。所以推荐用not exists代替not in不过如果是exists和in就要具体看情况了
      

  4.   

    建议left join 加 is null的条件来实现。
      

  5.   

    如果关联的主键是唯一的,用left join 加上 is null的效率比较高,而且会用到索引
      

  6.   

    http://blog.csdn.net/inthirties/archive/2009/08/26/4485630.aspx
      

  7.   

    一般情况下not exists的效率高于not in。