数据库查询——性能调优~
飘过的小牛 2013-12-06 02:43:12 现在项目出现了一个性能瓶颈:
我有A/B/C,3个表
现在通过B查询状态为1的记录,大概4000条。然后遍历这4000条:
在C表(50万记录)查找id和B表id相同的记录
所以,性能瓶颈就是C表根据id查询。所以需要执行4000次查询。再包括建立连接、断开连接之类的开销。现在完成这个模块大概需要4分钟左右。
我现在想优化的思路是这样:
通过1次查询把C表的信息全部读进内存。但是问题是,如果我没有任何处理就读取,那么返回的是List<Object>对象,我需要完成4000 * 50万遍历才能完成这个任务。这样就更悲剧了。 所以,我想
select * from C where id in (1,2,3,4,5,...4000); 然后把这些结果装到一个
HashMap<B表id, List<Object>>。这样我用到的时候根据id就可以拿。
不知道SimpleJdbcTemplate有这样的函数吗????在线急等~~~