首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > Java Web开发 >

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

2011-12-27 
数据量大,查询显示的非常慢,求解决方法我做了一个信息查询的页面,大概一次查询100个左右的数据(并且还要放

数据量大,查询显示的非常慢,求解决方法
我做了一个信息查询的页面,大概一次查询100个左右的数据(并且还要放到ArrayList列表里循环查询,大概循环10次,所以一个页面就得显示大概1000个左右的数据),sql语句就是简单的select * from 表名。
并且每个数据在查询出来之前都要做一个判断,就是判断这个数据在另外一个表里有没有这个值(判断方法写在了数据库查询方法里),这样一来导致查询非常慢,查一次需要10几秒钟,我想知道应该如何解决这个问题,急求,谢谢各位!!

[解决办法]
是数据库查询慢,还是页面显示慢?

你把sql语句直接在数据库执行,看速度如何?

如果是页面慢,那就是你的table动态显示的内容太多了,可以在table中加<tbody>或使用js处理。
[解决办法]
采用分页的查询方式,减少查询量
[解决办法]
1,select * from 表名 能少用select * 尽量少用,因为是无序查询,每次查询100就TOP 100 ,也可以加索引。

[解决办法]
select * from 表名,然后再数据库里面判断是否符合条件?

最好用一条sql解决问题,判断的都写在这条查询sql里面,不要另外判断。
[解决办法]
试试在数据库工具中直接运行看看效果
不行的话试试存储过程
[解决办法]
分页, 索引, 表分区..
[解决办法]

探讨
就是判断这个数据在另外一个表里有没有这个值(判断方法写在了数据库查询方法里),这样一来导致查询非常慢

[解决办法]
1.可以使用分页
2.尽量不要使用select * .....,你可以选择字段查询
[解决办法]
楼主别着急,把问题说清楚了,大家帮你解决...
你要做什么,遇到什么瓶颈?
[解决办法]
最好的办法 重新设计数据库结构。 垃圾的办法就是 做缓存,写静态话页面
[解决办法]
朋友,你直接使用分页,这样可以减少查询的时间.
[解决办法]
序列 索引 表分区
[解决办法]
查询 1000 次不慢才怪呢,连问问题都不会问!

如果你只说查询 1000 次,鬼知道你查的是什么东西!问到现在一行代码都没看到,看到的竟是对于解决这个问题没用的废话,而且在 0 楼说了一次,在 16 楼又说了一次。

这种问题你必须提供下面这些信息,否则没人帮你

1,数据库管理系统类型、版本
2,所使用到的表,以及表结构和索引结构
3,这些表的关系是什么
4,需要从这些表中查出什么数据供页面显示
5,简要地从技术角度(你是怎么写 SQL 语句的)描述一下你现在是怎么做的
6,你是用原始的 JDBC,还是什么 ORM 工具
[解决办法]
添加查询字段,不要使所有字段,会有点用

[解决办法]
用List代替ArrayList
[解决办法]
探讨
查询 1000 次不慢才怪呢,连问问题都不会问!

如果你只说查询 1000 次,鬼知道你查的是什么东西!问到现在一行代码都没看到,看到的竟是对于解决这个问题没用的废话,而且在 0 楼说了一次,在 16 楼又说了一次。

这种问题你必须提供下面这些信息,否则没人帮你

1,数据库管理系统类型、版本
2,所使用到的表,以及表结构和索引结构
3,这些表的关系是什么
4,需要从这些表中查出什么数据供页面显示
5,简要地从技术角度(你是怎么写 SQL 语句的)描述一下你现在是怎么做的
6,你是用原始的 JDBC,还是什么 ORM 工具

[解决办法]
1000次就慢?不会吧 你们的数据库有点烂哦
select * 是不好的,影响效率。能在数据库处理的东西 就要在JAVA处理了


你的问题 还真的是没有几个人能看懂。
不能提供更详细的情况的话,大家只能建议你分页或优化SQL了。
因为一无所知啊
[解决办法]
我见过类似的问题,在外部判断完dataset之后loop住访问数据库取得数据
然后再将数据合并在一起送还页面展示

当时差点被雷死
直接改成存储进程在db端全部解决完之后直接返回dataset了

1000次绝对不至于慢的,access也不会很慢
重新架构一下你的数据访问流程了
[解决办法]
学习了
[解决办法]
看看好东西啊
------解决方案--------------------


路过。。。。。
[解决办法]
缓存吧 比较 快 哈哈
[解决办法]
可以采用缓存机制
第一次判断:把所有数据从数据库中读取
第二次判断:把符合要求的数据从缓存器中读取
[解决办法]
凑热闹
[解决办法]
学习
[解决办法]
楼主没有把问题说清楚,问题很难回答。。。
[解决办法]
同意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最大連接值也無濟於事了。

热点排行