现在有如下两张表:A和B,A表有用户id、账期、短信条数、语音使用等字段;B表是有id、费用、账期等字段,这两张表的数据都是千万级数据量,我想选取在A表中存在但是在B表中不存在的id字段,请问如何来写效率会高些,据说not in的效率最底下,那问下如果用外关联限制is null 或者是minus的效率咋样,与not exist相比较呢?

解决方案 »

  1.   

    在A表中存在但是在B表中不存在的id字段
    select id from a where not exisits (select 1 from b where a.id=b.id);select id from a minus select id from b;自己实际环境测试一下效率;
      

  2.   

    额,其实就是由于现在没法测试,我猜想知道到底哪个好,我知道not in肯定是最不好的,剩下的哪个好我就不知道了。。
      

  3.   


    minus会排序,大数据量的时候还是免了吧
      

  4.   

    not exist 吧。minus 最不可取。
      

  5.   

    建议not exist 吧。
      

  6.   

    那外关联之后的is null效率如何啊