做了个统计功能的东西,但是由于数据比较多,现在速度很慢,各位帮忙看看有没办法优化:
sql = "select * from sys_comp";
ResultSet rs = stmt.executeQuery(sql);
while (rs.next()) { //这里目前大概有1500条记录,以后还会增加
String compid = rs.getString("compid"); sql = "select * from sys_compflow where compid='"+compid+"' "; //这里每次大概有10条
ResultSet rs2 = stmt.executeQuery(sql);
String flowid = rs2.getLong("flowid"); sql = "select * from sys_flowhis where flowid="+flowid; //这里有1-5条记录
ResultSet rs3 = stmt.executeQuery(sql);
}
这里的几句sql文是我随便写的,大概的记录条数是正确的,目前这个查询速度很慢(大概要5-10分钟),里面的3个sql语句因为一开始的数据库设计不好,导致目前无法合并到一句执行,各位帮忙
看看,是否有办法可以进行优化?
sql = "select * from sys_comp";
ResultSet rs = stmt.executeQuery(sql);
while (rs.next()) { //这里目前大概有1500条记录,以后还会增加
String compid = rs.getString("compid"); sql = "select * from sys_compflow where compid='"+compid+"' "; //这里每次大概有10条
ResultSet rs2 = stmt.executeQuery(sql);
String flowid = rs2.getLong("flowid"); sql = "select * from sys_flowhis where flowid="+flowid; //这里有1-5条记录
ResultSet rs3 = stmt.executeQuery(sql);
}
这里的几句sql文是我随便写的,大概的记录条数是正确的,目前这个查询速度很慢(大概要5-10分钟),里面的3个sql语句因为一开始的数据库设计不好,导致目前无法合并到一句执行,各位帮忙
看看,是否有办法可以进行优化?
可以化解如下:
sql1 = "select compid from sys_comp";
ResultSet rs = stmt.executeQuery(sql1);
while (rs.next()) {
String compid = rs.getString("compid");
sql2 =select * from sys_flowhis where flowid=(select flowid from ys_compflow
where compid=='"+compid+"' "); ResultSet rs3 = stmt.executeQuery(sql2);
}
最好把 * 用具体的代替;
可能是我的这几句sql语句写的不太好,其实里面的几句sql文是无法合并的,我上面的只是举个例子而已,有其他的优化方法么?
2 1500条记录 全表扫描肯定是会很慢的
3 三个表为什么不能join??
我的sql文已经优化过了,但是3句无法合并到1句sql执行,只能分3次
我的目的只是想提高查询速度啊!