对List进行子集查询的效率

cqzkui 2013-06-17 06:38:02

A方式: 将数据库中2w条数据取出存在一个List中,程序每次直接从List中进行查询得到想要的数据。
B方式: 每次直接从数据库中查询得到想要的数据;

A与B相比较,哪种方式的效率更高?
...全文
264 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
cqzkui 2013-06-22
  • 打赏
  • 举报
回复
2w条,只是查询,没有增删改,理论上A方式要好,但不知A方式中检索数据的效率如何了
宁波朱超 2013-06-22
  • 打赏
  • 举报
回复
选B,A的话恐怕会报OOM,B的话做个存储过程效率嗷嗷滴。
hyunlong_java 2013-06-21
  • 打赏
  • 举报
回复
我感觉一般情况都是B吧 从数据库角度 2w条数据数据库本身的io时间也不算太少吧,如果表不小的话,传输时间也不短 从程序角度来说 你的2w条数据放到内存中如果是大对象内存多大也好 gc频繁了 系统岂不更慢?
menggexiaoshanxi 2013-06-21
  • 打赏
  • 举报
回复
数据量太小,根本测试不出那个效率更好
菖蒲老先生 2013-06-21
  • 打赏
  • 举报
回复
引用 10 楼 whos2002110 的回复:
[quote=引用 4 楼 flagiris 的回复:] 肯定是a啊,b需要与db交互,交互很花时间的。
我怀疑你看问题了没有, 2W条记录是从哪来的?[/quote] 晕死,我怀疑你明白我的意思没。 我说的是A只需第一次和DB交互,以后查询就不需要了。 而B每次查询都要交互一次。
whos2002110 2013-06-21
  • 打赏
  • 举报
回复
引用 4 楼 flagiris 的回复:
肯定是a啊,b需要与db交互,交互很花时间的。
我怀疑你看问题了没有, 2W条记录是从哪来的?
火影之贺 2013-06-21
  • 打赏
  • 举报
回复
果断B。数据库是非常成熟的产品。 A的方式太消耗内存了。另外你自己写的代码效率不见得高。
xxjxxmxhlr 2013-06-21
  • 打赏
  • 举报
回复
感觉楼主的操作并不是一时完成的,似乎还有各种增删改等操作,那我还是推荐B 存在List的话或多或少都会有缓存的问题吧,一旦程序在更新数据库之前崩溃了呢,那你之前缓存中处理的数据岂不是无忌可循了么,而且每次的增删改查都去动一个2W多的List感觉很不划算啊
Stargazer2200 2013-06-21
  • 打赏
  • 举报
回复
无论是哪个方式,都有它的优势和弱势,到底用哪种方法,取决于具体的业务需求和你的硬件还有系统情况. A : 一次取出,减少数据库交互次数.但是初始化压力大,而且会对内存有压力如果数据结构复杂. B : 多次取出,数据库交互次数多.但是如果数据缓存作的好,这根本不是问题. 当然最重要的是具体业务,如果哪种好早有定论,这问题也就轮不到我们这代人提出了.
cqzkui 2013-06-21
  • 打赏
  • 举报
回复
关键是从list中查询数据得从头到尾遍历list,这个也费时间吧
  • 打赏
  • 举报
回复
这个完全是看数据的多少,像十万、百万条的一般是B,数据量小的A比较适合!
菖蒲老先生 2013-06-18
  • 打赏
  • 举报
回复
肯定是a啊,b需要与db交互,交互很花时间的。
编程点滴 2013-06-18
  • 打赏
  • 举报
回复
个人认为A
dtkxl 2013-06-18
  • 打赏
  • 举报
回复
我个人认为是b
寻找鱼钩的鱼 2013-06-17
  • 打赏
  • 举报
回复
2W条还不算多,可以A 大型数据B较高

81,092

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧