目前在测试JDBC数据库多线程操作,想要提高效率,无奈发现每次运行的SQL执行时间不太一样,遍历ResultSet的时间,也不太一样为了方便观察,我采用单线程单Session会话模拟,核心代码try(Connectionconnection=DBUtils.openConnection()){for(inti=0;i<6;i++){longs=System.currentTimeMillis();System.out.println("准备执行SQL...............");try(PreparedStatementpreparedStatement=connection.prepareStatement(PRE_SQL+i);ResultSetresultSet=preparedStatement.executeQuery()){longcost1=System.currentTimeMillis()-s;System.out.println("执行SQL耗时:"+cost1+"ms");s=System.currentTimeMillis();while(resultSet.next()){names.add(resultSet.getString("name"));}longcost2=System.currentTimeMillis()-s;System.out.println("遍历结果耗时:"+cost2+"ms");System.out.println("总耗时:"+(cost1+cost2)+"ms");System.out.println();}catch(SQLExceptione){e.printStackTrace();}}System.out.println("集合大小为:"+names.size());}catch(ClassNotFoundException|SQLExceptione){e.printStackTrace();}然后结果大同小异,如下:准备执行SQL...............执行SQL耗时:2194ms遍历结果耗时:474ms总耗时:2668ms准备执行SQL...............执行SQL耗时:1934ms遍历结果耗时:407ms总耗时:2341ms准备执行SQL...............执行SQL耗时:793ms遍历结果耗时:536ms总耗时:1329ms准备执行SQL...............执行SQL耗时:1812ms遍历结果耗时:395ms总耗时:2207ms准备执行SQL...............执行SQL耗时:810ms遍历结果耗时:643ms总耗时:1453ms准备执行SQL...............执行SQL耗时:682ms遍历结果耗时:2207ms总耗时:2889ms集合大小为:6000000补充一句,有6个测试表,test_0至test_5,每个有100w测试数据。望了解其中一二的解答下,困扰很久这个问题了,感谢~
紫衣仙女
相关分类