oracle中的exists 用法以及效…

来源:互联网 发布:金庸群侠传x源码 编辑:程序博客网 时间:2024/06/06 05:49
  Ta,Tb两张数据库表关联列为 Ta.aid = Tb.bid,现在要取 Ta中的数据,其中Ta.aid的值在b中也存在:
  SQLl实现如下:
  select * from Ta where exists(select 1 fromTb where Ta.aid = Tb.bid) 
  
   福利一枚:
   现在要取 Ta中的数据,其中Ta.aid在Tb中不存在: 
  select * from  Ta wherenot exists(select 1 from Tb where Ta.aid = Tb.bid)


    有两个简单例子,以说明“exists”和“in”的效率问题

    1) select * from Tawhere exists(select 1 from Tb where Ta.aid = Tb.bid) ;

    Ta数据量小而Tb数据量非常大时,Ta<<Tb 时,1) 的查询效率高。

    2) select * from Tawhere Ta.aid in (select Tb.bid from Tb) ;

    Ta数据量非常大而Tb数据量小时,Ta>>Tb 时,2) 的查询效率高。

0 0
原创粉丝点击