做了个统计功能的东西,但是由于数据比较多,现在速度很慢,各位帮忙看看有没办法优化:
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语句因为一开始的数据库设计不好,导致目前无法合并到一句执行,各位帮忙
看看,是否有办法可以进行优化?

解决方案 »

  1.   

    那可以把不必要的数据去掉不要查询;
    可以化解如下:
    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);
    }
    最好把 * 用具体的代替;
      

  2.   

    谢谢楼上的!
    可能是我的这几句sql语句写的不太好,其实里面的几句sql文是无法合并的,我上面的只是举个例子而已,有其他的优化方法么?
      

  3.   

    1 不知道LZ的真正意图是什么
    2 1500条记录 全表扫描肯定是会很慢的
    3 三个表为什么不能join??
      

  4.   

    因为一开始表结构设计的不好,所以无法join,
    我的sql文已经优化过了,但是3句无法合并到1句sql执行,只能分3次
    我的目的只是想提高查询速度啊!