方式1:
for循环,每一次进行一次插入数据。
方式2:
jdbc的preparedStatement的batch操作
PreparedStatement.addBatch();
......
PreparedStatement.executeBatch();
一次最多不要超过50条:
1.因为当你插入的时候 数据库已经锁定,然而如果你一次性插入太多会造成其他业务的等待。
2.会造成内存的溢出
方式2的本质是:insert into table (a,b,c,d) values(av,bv,cv.dv);insert into table (a,b,c,d) values(...)...
方式3:
for循环拼接sql。成为insert into table (a,b,c,d) values (av,bv,cv,dv),(....),(...).这种形式
别人的经验之谈:
最近项目中使用SSH+oracle数据库,使用C3P0连接池,要求当执行某动作时在2表中各插入一万条数据。于是就采用了jdbc的方式插入。
先获取一个sequence,再将数据插入到数据库中。一测试时间,崩溃了,用时近3分钟(其中获取两个表的sequence很费时),后来想想以前曾经做过一个类似的项目,使用了主键自增的策略,就将主键改为自增了。再次测试,还可以,不到3秒。将此代码记录下来,以便日后参考。
顺便说说,可以使用存储过程(尤其是操作多个表插数据),这样效率更快些。
这篇文章也不错: