最近在做一个导出的功能(项目是web),先通过数据库查询出一个List,然后遍历List ,根据List中的元素的Id查询其它信息(也是通过数据库查询),导致性能比较差,但又不能一次性全部查询出来,各位大神,给点建议。。
试试在查询的时候连表关联查询。还有,你是用hibernate还是mybatis,还是说用jdbc之类的?
联查,
例如:
A表:
A_ID,
A_NAME
B表
B_ID,
A_ID,
B_NAME
sql:SELECT a.A_ID,a.A_NAME,b.B_ID,b.B_NAME FROM A a, B b WHERE a.A_ID = b.A_ID
这种问题直接关联两张表就可以了呀
为什么要用list?用map,关键字就用你的id
1.第一次查出来,放到Map
2.用map的keySet去查相关的内容,sql的in语句,可以减少频繁getConnection消耗的时间
3.第二次查出来,放到Map
4.通过Id把两个Map的内容关联起来
根据List中的元素的Id查询其它信息的时候不要一个一个的去查,一次查100个,处理完后再查下一百个这样
表A,表B
select b.x, b.y, b.z from A a join B b on a.b_id=b.id where a.name='xxx';(条件根据需要自己写,没有条件就去掉where或者加上1=1)