当前位置:编程学习 > JAVA >>

对List进行子集查询的效率


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

   A与B相比较,哪种方式的效率更高? --------------------编程问答-------------------- 2W条还不算多,可以A   大型数据B较高 --------------------编程问答-------------------- 我个人认为是b --------------------编程问答-------------------- 个人认为A --------------------编程问答-------------------- 肯定是a啊,b需要与db交互,交互很花时间的。 --------------------编程问答-------------------- 这个完全是看数据的多少,像十万、百万条的一般是B,数据量小的A比较适合! --------------------编程问答-------------------- 关键是从list中查询数据得从头到尾遍历list,这个也费时间吧 --------------------编程问答-------------------- 无论是哪个方式,都有它的优势和弱势,到底用哪种方法,取决于具体的业务需求和你的硬件还有系统情况.
A : 一次取出,减少数据库交互次数.但是初始化压力大,而且会对内存有压力如果数据结构复杂.
B : 多次取出,数据库交互次数多.但是如果数据缓存作的好,这根本不是问题.

当然最重要的是具体业务,如果哪种好早有定论,这问题也就轮不到我们这代人提出了. --------------------编程问答-------------------- 感觉楼主的操作并不是一时完成的,似乎还有各种增删改等操作,那我还是推荐B
存在List的话或多或少都会有缓存的问题吧,一旦程序在更新数据库之前崩溃了呢,那你之前缓存中处理的数据岂不是无忌可循了么,而且每次的增删改查都去动一个2W多的List感觉很不划算啊 --------------------编程问答-------------------- 果断B。数据库是非常成熟的产品。

A的方式太消耗内存了。另外你自己写的代码效率不见得高。 --------------------编程问答--------------------
引用 4 楼 flagiris 的回复:
肯定是a啊,b需要与db交互,交互很花时间的。

我怀疑你看问题了没有, 2W条记录是从哪来的? --------------------编程问答--------------------
引用 10 楼 whos2002110 的回复:
Quote: 引用 4 楼 flagiris 的回复:

肯定是a啊,b需要与db交互,交互很花时间的。

我怀疑你看问题了没有, 2W条记录是从哪来的?


晕死,我怀疑你明白我的意思没。
我说的是A只需第一次和DB交互,以后查询就不需要了。
而B每次查询都要交互一次。 --------------------编程问答-------------------- 数据量太小,根本测试不出那个效率更好 --------------------编程问答-------------------- 我感觉一般情况都是B吧
从数据库角度 2w条数据数据库本身的io时间也不算太少吧,如果表不小的话,传输时间也不短
从程序角度来说 你的2w条数据放到内存中如果是大对象内存多大也好 gc频繁了 系统岂不更慢?
--------------------编程问答-------------------- 选B,A的话恐怕会报OOM,B的话做个存储过程效率嗷嗷滴。 --------------------编程问答-------------------- 2w条,只是查询,没有增删改,理论上A方式要好,但不知A方式中检索数据的效率如何了
补充:Java ,  Web 开发
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,