1可用批量处理方法从速度和效率上都有提高
Connection conn = Conn.getConn("sms");
Statement stmt=conn.createStatement();
conn.setAutoCommit(false);
String content1[] = content.split("\n");
for (int i = 0; i < content1.length; i++) {
String content2[] = content1[i].split("\t"); String name = content2[0];
String phoneNO = content2[1];
String classname = content2[2];
String departmentName = content2[3].trim();
strSQL = "Insert into STUDENT (ID,NAME,PHONENO,CLASSNAME,DEPARTMENTNAME) Values (SEQ_STUDENT.Nextval,'"
+ name + "'," + phoneNO + ",'" + classname + "','" +
departmentName + "')";
stmt.addBatch(strSQL);
}
int[] updateCount=stmt.executeBatch();
conn.commit();
conn.setAutoCommit(true);
stmt.close();
conn.close();
Connection conn = Conn.getConn("sms");
Statement stmt=conn.createStatement();
conn.setAutoCommit(false);
String content1[] = content.split("\n");
for (int i = 0; i < content1.length; i++) {
String content2[] = content1[i].split("\t"); String name = content2[0];
String phoneNO = content2[1];
String classname = content2[2];
String departmentName = content2[3].trim();
strSQL = "Insert into STUDENT (ID,NAME,PHONENO,CLASSNAME,DEPARTMENTNAME) Values (SEQ_STUDENT.Nextval,'"
+ name + "'," + phoneNO + ",'" + classname + "','" +
departmentName + "')";
stmt.addBatch(strSQL);
}
int[] updateCount=stmt.executeBatch();
conn.commit();
conn.setAutoCommit(true);
stmt.close();
conn.close();
就是说一次去一部分,然后写到临时表中,依次在来
这样应该可以的!
其实很简单亚:
首先,删除临时表中数据,这是必须的第一步
接着,按照分组条件,将统计出来的数据,直接插入临时表中,就ok了。你何必在程序中实现那?完全可以用sql语句实现亚
写一个insert语句就可以了,当然,插入的数据,是从其他表查询出来的了
还有感觉while()中嵌套while()这种方式不是很好。
1.用存储过程来做效率更高的,用纯Sql来实现这个统计功能.这样效率绝对是最高的,因为本身存储过程就是用来处理复杂的数据操作的.而且交给后台数据库,这些处理都是有优化的.
2.增加JVM的堆内存大小,也可以加快你程序的运行速度的.具体的参数忘了,Sorry.可以查找一下了.
3.你的程序我没怎么看明白,但是如果只是说一个统计的话,应该用Sql就可以直接得到的呀(可能涉及到Sql的嵌套,in等操作符),不用你用程序在那循环的.当然具体的业务逻辑我不清楚,你在考虑一下,看用一个Sql语句是否可以实现这个功能.总的来说我认为最好的方法就是用后台来实现这个功能是最好的.