日期:2014-05-18  浏览次数:20596 次

数据量大,查询显示的非常慢,求解决方法
我做了一个信息查询的页面,大概一次查询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也不会很慢
重新架构一下你的数据访问流程了
------解决方案--------------------
学习了
------解决方案--------------------
看看好东西啊
------解决方案--------------------