浏览 3969 次
该帖已经被评为新手帖
|
|
---|---|
作者 | 正文 |
发表时间:2008-08-27
数据库:oracle9i 应用服务器:tomcat6 StringBuffer sb = new StringBuffer(); sb.append(" SELECT PLU_CODE,PLU_VALUE,MEASURE_TIME,EQP_ID FROM E_DATA_VALUE "); sb.append(" WHERE EQP_ID=? AND MEASURE_TIME BETWEEN ? AND ? ");*/ System.out.println(System.currentTimeMillis()); List rsop = getJdbcTemplate().queryForList(sb.toString(),param); System.out.println(System.currentTimeMillis()); 速度非常慢,表中已经分区,数据大有5000万条,查询要30秒左右 DataSource ds = this.getDataSource(); Connection con = null; PreparedStatement pstmt = null; ResultSet rs =null; try { con = ds.getConnection(); { pstmt = con.prepareStatement("SELECT PLU_CODE,PLU_VALUE,MEASURE_TIME,EQP_ID FROM E_DATA_VALUE WHERE EQP_ID=? AND MEASURE_TIME BETWEEN to_date(?,'yyyy-mm-dd hh24:mi:ss') AND to_date(?,'yyyy-mm-dd hh24:mi:ss') "); pstmt.setInt(1, eqpId); pstmt.setString(2,qd.getBeginTime()); pstmt.setString(3, qd.getEndTime()); rs = pstmt.executeQuery(); } } catch( Exception sqle ) { ds = null; con = null; pstmt = null; }finally{ ds = null; con = null; pstmt = null; }这种方式,查询只要<1秒, 可是无法释放连接池,大概一天时间后,就会连接池耗尽 不知道有没有好的办法实现解决getJdbcTemplate().queryForList(sb.toString(),param);查询慢的问题,困扰!
声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2008-08-27
为什么都没回复,就新手贴,,考,,
|
|
返回顶楼 | |
发表时间:2008-08-27
你自己那种方式自然没有释放资源啊,因为你就是
ds = null; con = null; pstmt = null; 的,还是应该调用它们的close方法啊, 既然是新人,还是从基础的学起比较好 |
|
返回顶楼 | |
发表时间:2008-08-27
太基础, 漂过了. 同意楼上的.
|
|
返回顶楼 | |
发表时间:2009-03-25
connection,要close
|
|
返回顶楼 | |