データベースの連続Insertの時に、かなり速度が遅くります。
multiple insertを使うことで劇的に改善されました。
INSERT INTO table名 (カラム1, カラム2, カラム3) VALUES (データ1, データ2, データ3), (データ4, データ5, データ6), (データ7, データ8, データ9), (・・・);
このようにvalues以下を並べて書けばいいです。SQLを発行するのは1回だけとなります。
参考
http://qiita.com/jkr_2255/items/12081b3c066d371516f5
Javaで利用するとき、valuesのところが文字列連結になってきます。今回繰り返し数が多いのでStringBufferを使いました。これもかなり早い。
参考
http://www.techscore.com/blog/2012/11/29/%E6%96%87%E5%AD%97%E5%88%97%E7%B5%90%E5%90%88-java%E7%B7%A8/
[利用例]
StringBuffer buf = new StringBuffer();
buf.append("INSERT INTO points(hospital_id, calclation_id,dea) VALUES");
for(int i = 0; i < constraint.length; i++){
double dea = (var[2]*constraint[i][2] + var[3]*constraint[i][3])/(var[0]*(-1)*constraint[i][0]+var[1]*(-1)*constraint[i][1]);
if(i == constraint.length -1)
buf.append("("+hospital_id[i]+","+calclation_id+","+dea+")");
else
buf.append("("+hospital_id[i]+","+calclation_id+","+dea+"),");
}
String sql4 = buf.toString();
stmt.execute (sql4);
0 件のコメント:
コメントを投稿