sql  是生成的SQL语句
select tt.id from master tt,part ts where tt.id2=ts.id3 and ts.id2 in (select wt.id from master t,usagelink wt where wt.id=t.id and t.number='0000000042' )
Connection conn = getConnection();
PreparedStatement stmt = conn.prepareStatement(sql);
ResultSet rs = stmt.executeQuery();
while (rs.next()) {
      ....
}该sql在sqlplus中执行是10秒,可用上面的语句执行,却要20000多秒,到底怎么回事。
sql应该是没什么问题,可以达到性能要求,关键就是jdbc代码的写作,有什么可以改进的地

解决方案 »

  1.   

    因为你做了很多事,建链接,执行查询,返回结果,处理结果
    另外,sql文中用in的话效率也是不高的
      

  2.   

    数据很多的话,用in这个字段速度极其的慢。
    在数据库底层,数据库会遍历所有的数据找与满足in条件的记录。
      

  3.   

    http://gardenias.5d6d.com/thread-26-1-1.html
    你去这里看看  这个是查询优化 
      

  4.   

    我写的时间只是ResultSet rs = stmt.executeQuery();这一句执行的时间,并不包括生成SQL和遍历结果。 
    抱歉,我没有说清楚。上面的代码只是一个示例,我代码的样子
    我测时间用的代码是:
    long s1 = System.currentTimeMillis();
    ResultSet rs = stmt.executeQuery();
    long s2 = System.currentTimeMillis();时间输出是:s2-s1  不知道这样测试代码时间是否合理。
      

  5.   

    20000多秒?楼主等了5个半小时?太有耐心了。。
    优化优化sql吧,尽量少用in