您的位置:首页 > 数据库 > Oracle

oracle中的exists 用法以及效…

2017-04-11 12:16 441 查看
  Ta,Tb两张数据库表关联列为 Ta.aid = Tb.bid,现在要取 Ta
中的数据,其中Ta.aid的值在b中也存在:
  SQLl实现如下:
  select * from Ta where exists(select 1 from
Tb where Ta.aid = Tb.bid) 
  
   福利一枚:
   现在要取 Ta
中的数据,其中Ta.aid在Tb中不存在: 
  select * from  Ta where
not exists(select 1 from Tb where Ta.aid = Tb.bid)

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

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

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

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

   
 Ta数据量非常大而Tb数据量小时,Ta>>Tb 时,2) 的查询效率高。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: