日期:2014-05-20  浏览次数:20680 次

关于JAVA数据库查询优化的问题,请教一下有经验的人。
是这样的,例如我有一个B.JSP页面这个页面上有15个下拉框(姑且不讨论这样做是否合理).每个下拉框都对应不同的表去查找数据,那么当我从A.JSP页面转向到ACTION之后 在ACTION的方法体当中通过后台的方法去对每张表进行查询,查询每张表都会调用不同的方法,然后在ACTION里面把每个集合丢到request中返回到B.jsp页面 可是这样一来相当于打开了十几个数据库连接,这样页面在打开的时候相当的慢,我能想到得办法就是写一个方法 只打开一个数据库连接 然后在这个方法中写十几个查询数据库的语句对应不同的表,然后查出来的所有集合都丢到一个集合当中,返回到ACTION在循环取出每个集合。可是这样并非是个好办法。视图也想过,但是每个下拉框的数据都要指定一个标识才能查询到对应的集合,这样一来也不太好。现在想问问大家 各位遇到这种情况一般是怎么处理的?

------解决方案--------------------
使用连接池,可以试一下在一个sql里查出所有15个表的数据,或者使用存储过程
尝试优化sql
不知道你的具体问题是什么
------解决方案--------------------
用Ajax方式、用户点击了才跑到数据库去查询~~~!!!
------解决方案--------------------
用几个线程去查询不同的表,然后得到结果整理显示...不知道行不行LZ可以实验一下。
------解决方案--------------------
建议在服务器启动的时候就把这些信息放进缓存,用户每次读取这个页面都去缓存取
问题是在一些下拉内容修改时不能实时更新需要重启服务器
------解决方案--------------------
如你所说打开一个连接。。去做15次查询。。。然后关闭连接。。

因为你的每个查询条件不一样。。结果也不一样。。很难再做优化了。。。


------解决方案--------------------
可从以下两个方面着手
1、减少数据库连接
2、减少网络传输

具体情况具体分析,这15个下拉框的数据能否做个分类,放在一张表里面,比如分为id, 类别,名称,备注,一个类别对应一个下拉框。从A页面经过Action的时候,一次性把这些数据取到,形成一个JSON字符串,到B页面的时候通过脚本做解析,跟每个下拉框对应起来。(也不用形成JSON字符串,也可以在后台做分解再通过B页面获取,不过这样效果就差一点了)
如果这些数据不能放在同一个表,可通过视图,构造要返回的字段,达到同一张表的目的。
这样做,连接一次数据库,一次请求,一次响应。
------解决方案--------------------
探讨

引用:

你打开一个数据库连接就行啊,干嘛要查一次打开一次呢?


我知道,可以把这些都放在一个方法里面,那么只需要打开一次连接就可以 可是这样的方法 查询还是必不可少的也不是什么好办法。并且即使将这些集合拿到了 在ACTION还要在把每个集合循环出来,效率不见得能高多少。

------解决方案--------------------
探讨

引用:
引用:

引用:
引用:
如你所说打开一个连接。。去做15次查询。。。然后关闭连接。。

因为你的每个查询条件不一样。。结果也不一样。。很难再做优化了。。。


实在要优化。。只有查询语句本身。。。


对于我昨天的回帖。抱歉了。。
……

------解决方案--------------------
探讨
建议在服务器启动的时候就把这些信息放进缓存,用户每次读取这个页面都去缓存取
问题是在一些下拉内容修改时不能实时更新需要重启服务器