MyException - 我的异常网
当前位置:我的异常网» Java Web开发 » 数据量大,查询显示的非常慢,求解决办法

数据量大,查询显示的非常慢,求解决办法(2)

www.MyException.Cn  网友分享于:2013-12-28  浏览:414次

路过。。。。。
------解决方案--------------------
缓存吧 比较 快 哈哈
------解决方案--------------------
可以采用缓存机制
第一次判断:把所有数据从数据库中读取
第二次判断:把符合要求的数据从缓存器中读取
------解决方案--------------------
凑热闹
------解决方案--------------------
学习
------解决方案--------------------
楼主没有把问题说清楚,问题很难回答。。。
------解决方案--------------------
同意8楼的看法,在某些情况下第三方软件可以为你做的很好,但是在少量数据情况下你的内存是完全可以接受的,所以你只需要把数据放到内存中,在你的程序里你可以用更好的算法进行查询匹配。。。。。。。
------解决方案--------------------
其实现在楼主的查询慢的原因是。先查询100条记录出来。
在这里做循环。。而且在循环的时候,还要查询数据库。。。
最后要比较数据是否存在于另一个表中。。

至此,才算一个业务逻辑走完。。关键在这里。

100 * 10 如果是用JDBC那会更慢。用联接池还好点。。但是开销也是很大的。。

建议换个思路,改变一下逻辑。。尽量不要在循环里面再去查询数据库。。。
------解决方案--------------------
我还真想帮你解决这个问题,不是来混分的,但是我觉得你最好把数据库结构和要求显示的结果都列出来,这样大家才能一次帮你到位.
------解决方案--------------------
改下sql吧,
假設表A,B,C
從A中查詢100條記錄,然後逐條查詢表B中對應的記錄,結果出來前判斷該條記錄是否在表C中存在,是這樣嗎?

或者理解2是,只有兩張表A,B,查詢結果出來前判斷是否在表B中存在。

無論是哪種情況,你都可以通過改sql來解決的。
如第一種情況,可以一次查出所有結果,jdbc只需要連接一次.

select a.c1,b.c2,b.c3 from a,b where a.c1 = b.c1 and exists (select 1 from c where c.c4 = b.c4);

不知道所用的數據庫是什麽,不過強烈建議樓主你好好讀讀《Oracle 9i10g编程艺术》,瞭解數據庫是如何工作的,

項目中見過太多如類似樓主這樣的情況了,為了出來結果未考慮結果寫出來的代碼,在上線時是完全不能用的。比如在幷發情況下,若100個人在操作這個頁面,那麼JDBC對數據庫的請求數是100000,即使改數據庫session最大連接值也無濟於事了。

文章评论

软件开发程序错误异常ExceptionCopyright © 2009-2015 MyException 版权所有