若能浅笑-谁愿愁眉 2014-10-10 05:38 采纳率: 50%
浏览 6742
已采纳

循环查询数据库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);
  }
}

这两种方式哪个效率高

  • 写回答

4条回答 默认 最新

  • 若能浅笑-谁愿愁眉 2014-10-28 03:38
    关注
    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次查询数据库,提高执行效率了*/
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?

悬赏问题

  • ¥20 求计算赫斯特(Hurst)指数
  • ¥15 delta降尺度计算的一些细节,有偿
  • ¥15 Arduino红外遥控代码有问题
  • ¥15 数值计算离散正交多项式
  • ¥30 数值计算均差系数编程
  • ¥15 redis-full-check比较 两个集群的数据出错
  • ¥15 Matlab编程问题
  • ¥15 训练的多模态特征融合模型准确度很低怎么办
  • ¥15 kylin启动报错log4j类冲突
  • ¥15 超声波模块测距控制点灯,灯的闪烁很不稳定,经过调试发现测的距离偏大