SQL查询中in和exists的区别分析

select * from A where id in (select id from B);


select * from A where exists (select 1 from B where A.id=B.id);


对于以上两种情况,in是在内存里遍历比较,而exists需要查询数据库,所以当B表数据量较大时,exists效率优于in。


1、select * from A where id in (select id from B);


in()只执行一次,它查出B表中的所有id字段并缓存起来。之后,检查A表的id是否与B表中的id相等,如果相等则将A表的记录加入结果集中,直到遍历完A表的所有记录。
它的查询过程类似于以下过程:


复制代码 代码如下:

List resultSet={};
Array A=(select * from A);
Array B=(select id from B);


for(int i=0;i<A.length;i++) {
   for(int j=0;j<B.length;j++) {
      if(A[i].id==B[j].id) {
         resultSet.add(A[i]);
         break;
      }
   }
}
return resultSet;

原创文章,作者:745907710,如若转载,请注明出处:https://blog.ytso.com/234608.html

(0)
上一篇 2022年1月23日
下一篇 2022年1月23日

相关推荐

发表回复

登录后才能评论