/**
* 方案一:
* 使用select * from table where order by 进行查询,但是使用默认方式
*/privatevoidplan1(StringstartTime,StringendTime){StringBuilderqueryBuilder=newStringBuilder("select * from ").append(jdbcUtils.getTableName()).append(" where ").append(jdbcUtils.getFieldArray()[2]).append(" >= ? and ").append(jdbcUtils.getFieldArray()[2]).append(" <= ? order by ").append(jdbcUtils.getFieldArray()[2]).append(" asc");longstart=System.currentTimeMillis();longstartUsedMemory=memoryMonitor.getUsedMemory();try(Connectionconnection=jdbcUtils.getJdbcTemplate().getDataSource().getConnection()){PreparedStatementps=connection.prepareStatement(queryBuilder.toString());ps.setObject(1,startTime);ps.setObject(2,endTime);ResultSetrs=ps.executeQuery();log.info("plan1 consumed {}, {}",TimeUtils.humanizedFormat(System.currentTimeMillis(),start),memoryMonitor.convertBytes(memoryMonitor.getUsedMemory()-startUsedMemory));}catch(Exceptionignore){}}/**
* 方案二:
* 使用select * from table where order by 进行查询,但是使用参数调优
*/privatevoidplan2(StringstartTime,StringendTime){StringBuilderqueryBuilder=newStringBuilder("select * from ").append(jdbcUtils.getTableName()).append(" where ").append(jdbcUtils.getFieldArray()[2]).append(" >= ? and ").append(jdbcUtils.getFieldArray()[2]).append(" <= ? order by ").append(jdbcUtils.getFieldArray()[2]).append(" asc");longstart=System.currentTimeMillis();longstartUsedMemory=memoryMonitor.getUsedMemory();try(Connectionconnection=jdbcUtils.getJdbcTemplate().getDataSource().getConnection()){//对于postgresql,只有关闭事务,setFetchSize才会生效connection.setAutoCommit(false);//对于postgresql,后面的两个参数其实也就是默认值时使用的PreparedStatementps=connection.prepareStatement(queryBuilder.toString(),ResultSet.TYPE_FORWARD_ONLY,ResultSet.CONCUR_READ_ONLY);ps.setFetchSize(1000);ps.setFetchDirection(ResultSet.FETCH_FORWARD);ps.setObject(1,startTime);ps.setObject(2,endTime);ResultSetrs=ps.executeQuery();log.info("plan2 consumed {}, {}",TimeUtils.humanizedFormat(System.currentTimeMillis(),start),memoryMonitor.convertBytes(memoryMonitor.getUsedMemory()-startUsedMemory));}catch(Exceptionignore){}}