关于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页面获取,不过这样效果就差一点了)
如果这些数据不能放在同一个表,可通过视图,构造要返回的字段,达到同一张表的目的。
这样做,连接一次数据库,一次请求,一次响应。
------解决方案--------------------
------解决方案--------------------
------解决方案--------------------