oracle中的exists 用法以及效…

时间:2022-08-26 16:22:37
  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) 的查询效率高。