$$$$最后90分求一效率问题
数据库中的数据量比较大,在做如下事务处理的时候发现速度奇慢。求改进方案
得到HashMap;//这个HashMap从数据库中读取数据填充,填充效率很高
set <Entry <...> > set_hm=HashMap.entrySet();
//然后循环遍历这个set_hm
for <Entry <...> me:set_hm> {
// 遍历得到key和value赋值给PreparedStatement的set参数,比如:
ps.setInt(1,me.getKey());
//然后执行数据库查询操作,返回resultset
ResultSet rs=ps.executeQuery();
//我试过在这个for循环里不加sql查询,直接遍历一下hashmap的元素,效率很高,秒杀,但只要一加这个查询,速度一下子下来。请问有什么方法来解决这个问题
}
------解决方案--------------------个人意见,使用JDO。也可以在其他CPU时间比较充裕的时候,先进行JDBC查询。或者换数据库,比如Oracle。
------解决方案--------------------数据库连接池
------解决方案--------------------和数据库相关比较慢,一般都是因为创建连接的时候比较费时。你可以察看一下瓶颈是哪个部分的。
------解决方案--------------------如一定每个KEY值都去查一下数据库,好象只有给KEY字段加个索引会快好多,但还是会感觉慢的.
但一次从数据库取很多值回来,再查会是个好注意.
------解决方案--------------------学习一下.
------解决方案--------------------如果是没有返回类型的情况,可以用下批处理
在你的循环里
{
...
ps.setInt(1,me.getKey());
ps.addBath();
}
最后提交
ps.executeBath();
...
对于查寻,因为要返回只能考虑下连接池了,oracle...
------解决方案--------------------是否考虑过将一定数据先放到resultset(或者其他的)
然后再一起插入?
------解决方案--------------------HOHO
------解决方案--------------------能不能把N+1的问题改称1+1的问题