开发者社区> 问答> 正文

关于dao类循环单个查询和批量查询哪个效率高的问题?

a123456678 2016-03-17 10:46:18 1508

先简单描述下我的开发场景:首先我需要访问web service服务,获取一个数据集合List list。然后需要根据Entity的id属性查询数据库,绑定Entity的图片路径imagePath。需要说明的是,list集合的数据量不大。

然后我个人采用的方法是,循环list,每次调用dao类的queryImageById(int id)方法,逐个绑定Entity的imagePath。但我认为不妥的是,当list中数据量过大时,这样循环调用数据库查询,获取连接、关闭连接等等,是很消耗性能的。

那我能想到的第二种方式根据list进行批量查询,将得到的查询结果再循环,逐个比对list中Entity的id值,然后绑定Entity的imagePath。这种方法个人认为不用频繁地操作数据库,性能会提高。但循环次数增多,看的很繁琐。首先需要循环list,获取Entity的id集合;然后调用dao类类似queryImageByBatch(List<Integer> ids)的方法,获取到所有Entity的imagePath后(假设是Map<key, value>,key是Entity的id,value为Entity的imagePath);最后循环list和Map,按照id绑定Entity的imagePath。

其实提出这种情况,我想了解下,针对这种编程情况,实践经验是哪种方法。是根据具体数据情况具体分析,来决定采用哪个方法?还是就是站在性能的考虑,固然地选择第二种方法?
数据库
分享到
取消 提交回答
全部回答(1)
  • a123456678
    2019-07-17 19:04:45

    为什么不用联合查询?一条SQL搞定,调用起来方便,看上去也没有那么繁琐,节省IO(网络)开销。还有,你不用连接池的吗?怎么会每次都要连接和关闭呢。还有还有,你的食事务是怎么保证的,如果每执行一条SQL都要连接和关闭,那就没有事务了。不是么。 我在开发时尽量用一条SQL,嵌套联合各种来,因为可以减小IO的消耗。只要表和索引合理,不会很慢的。毕竟我不是千万里面做count(1)之类的操作

    0 0
+ 订阅

分享数据库前沿,解构实战干货,推动数据库技术变革

推荐文章
相似问题
推荐课程