循环查询数据库500次和用双层for循环进行25w次轮循哪个效率更高 -问答-阿里云开发者社区-阿里云

开发者社区> 问答> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

循环查询数据库500次和用双层for循环进行25w次轮循哪个效率更高

有两张表A、B。
A有500条记录,B有500乃至更多条,查询A表所有记录封装成List;
现根据A表的ID查询B表中对应的记录,那么

List<A> listA = getObjects(A.class);
for(A a : listA){/*循环查询数据库*/
  B b= getObjectById(a.getId());
  map.put("A",a.name);
  map.put("B",b.time);
}
List<B> listB = getObjects(B.class);
for(A a : List<A>){
  for(B b : List<B>){
    if(a.getId() == b.getAid())
      map.put("A",a.name);
      map.put("B",b.time);
  }
}

这两种方式哪个效率高

展开
收起
蛮大人123 2016-02-20 16:57:02 3452 0
1 条回答
写回答
取消 提交回答
  • 蛮大人123
    我说我不帅他们就打我,还说我虚伪
    List<A> listA = getObjects(A.class);
    Map<Long,Object> mapA = new HashMap<String,Object>();
    /*这里map的key是Object中的某一字段的类型,可以是int,string,long之类的*/
    
    for(A a : listA){
     mapA.put(a.getId(),a);
    }
    
    List<B> listB = getObjects(B.class);
    Map<String, Object> A_B = new HashMap<String, Object>();
    for(B b : listB){
       A a = mapA.get(b.getAId());
       A_B.put("B",b);
       A_B.put("A",a);
    }

    /这样就避免了N次查询数据库,提高执行效率了/

    2019-07-17 18:45:30
    赞同 展开评论 打赏
问答排行榜
最热
最新
相关电子书
更多
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
冬季实战营第三期:MySQL数据库进阶实战
立即下载