11.29

发布时间 2023-12-18 19:55:05作者: 刘梦磊

SELECT * from A WHERE idin (SELECT id from B)
SELECT * from A WHERE id EXISTS(SELECT 1 from A.id= B.id)
  in 是在内存中遍历比较

  exist 需要查询数据库,所以当B的数据量比较大时,exists效率优于in.

  in()只执行一次,把B表中的所有id字段缓存起来,之后检查A表的id是否与B表中的id相等,如果id相等则将A表的记录加入到结果集中,直到遍历完A表的所有记录。

  In 操作的流程原理如同一下代码

    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;