我有一个客户端Java7应用程序,它必须向数据库中插入大量的小数据(几列)。数据库(Mysql 5.6)位于我的服务器上。客户端Java应用程序在循环中调用存储过程以插入单行。行很简单,看起来像这样:
int | int | varchar | varchar | int | datetime
现在我这样做是这样的(伪代码):
try(DbConnection conn = new DbConnection()) {
for(RowModel model : rowModel) {
//inserting row here
}
}
catch(SqlException e) {
//process exception...
}如您所见,我打开连接一次,然后逐行插入。"rowModel“可能有上千行,对我来说,向mysql存储过程发送1个" longtext”看起来更合理,它会以某种方式将该长文本限定为适合单个"insert“调用。
这是可能的吗?如何实现?你有什么建议?
所以,基本上,总结一下: 1)调用一个有很多值的"insert“而不是客户端的"for-each”有什么好处吗? 2)我如何编写我的存储过程,让它接受1个大文本并使用单个"INSERT“命令插入它?
发布于 2016-06-10 14:26:57
在具有很多值的insert上调用会带来相关的性能优势。您只需执行一次命令,而不是像必须插入多少行这样的许多命令。
通常情况下,批量插入,所以也被称为这种技术,减少了许多时间的过程的持续时间。
例如:在一些经验测试中,在插入循环中插入1000,执行时间是1分钟。使用批量插入时,时间结果为2秒
https://stackoverflow.com/questions/36753804
复制相似问题