Mysql使用单个插入插入多行

时间:2016-04-20 19:50:10

标签: mysql database stored-procedures

我有一个客户端Java 7应用程序,必须将大量小数据(少数列)插入数据库。数据库(Mysql 5.6)位于我的服务器上。客户端Java应用程序在循环中调用存储过程以插入单行。行很简单,看起来像这样:

int | int | varchar | varchar | int |日期时间

我现在这样做的方式是这样的(伪代码):

try(DbConnection conn = new DbConnection()) {
for(RowModel model : rowModel) {
//inserting row here
}
}
catch(SqlException e) {
//process exception...
}

如您所见,我打开连接一次,然后逐行插入。 “rowModel”可能有数千行,对我而言,将1“LongText”发送到mysql存储过程似乎更合理,这将以某种方式将该longtext定义为适合单个“插入”调用。

有可能吗?你有什么建议?

所以,基本上,总结一下: 1)在一个“插入”中使用大量值而不是在客户端使用“for-each”是否有任何好处? 2)我怎样才能编写我的存储过程,因此它需要一个大文本并使用单个“INSERT”命令插入它?

1 个答案:

答案 0 :(得分:1)

调用带有大量值的插入有相关的性能优势..你只执行一次命令而不是很多命令,比如你必须插入多少行..

通常批量插入,所以也称为tecnique,减少程序的持续时间很多次。

例如:在插入循环中插入1000的一些经验测试中,执行时间为1分钟..批量插入时间结果为2秒