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代码的写作,有什么可以改进的地
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代码的写作,有什么可以改进的地
另外,sql文中用in的话效率也是不高的
在数据库底层,数据库会遍历所有的数据找与满足in条件的记录。
你去这里看看 这个是查询优化
抱歉,我没有说清楚。上面的代码只是一个示例,我代码的样子
我测时间用的代码是:
long s1 = System.currentTimeMillis();
ResultSet rs = stmt.executeQuery();
long s2 = System.currentTimeMillis();时间输出是:s2-s1 不知道这样测试代码时间是否合理。
优化优化sql吧,尽量少用in