几个插入性能c#
本文关键字:插入 性能 几个 | 更新日期: 2023-09-27 18:11:17
我必须在一个表中执行多次插入操作。现在,我有了一个要迭代的对象列表,对于每个对象,我使用插入语句执行ExecuteNonQuery。
我想知道是否有一种快速的方法来做这件事。这样,插入800个寄存器需要几分钟。
我在Java中使用了executeBatch方法,这是为了这个建议,c#中有类似的方法吗?
问候!
insert [相对]快速/便宜。提交缓慢且昂贵。
除非它是一个高延迟连接,否则多个(例如,数百个)插入语句应该就可以了。
"……听起来好像没有使用事务(因此可能有800次提交——哎哟!)在c#中控制事务最简单的方法之一就是使用TransactionScope:
using (var connection = ...)
using (var tx = new TransactionScope()) {
foreach (var row in rows) {
// insert row
}
// commit all at once
tx.Complete();
}
我只会在限制事务(和提交)的数量不足以满足功能需求的情况下考虑方法。
快乐编码。
你的语句可以是这样的:
insert into my_table (field1, field2, ...)
values (row1_value1, row2_value2, ...),
(row2_value1, row2_value2, ...), ...
例如,如果你创建一个StringBuilder,你可以批处理20、50或100个插入,并发出更少的插入语句。
如果你想在。net应用程序中执行所有操作,请查看使用数据适配器(ADO.NET)执行批处理操作。
如果你想要最快的性能,你可以使用bcp实用程序(假设你正在使用SQL Server)。您可以将数据写入带分隔符的文件,并使用bcp执行插入。
把所有的插入语句写在一个用';'分隔的字符串中,然后把这个字符串传递给ExecuteNonQuery,怎么样?
检查错误,只需将插入的数量与ExecuteNonQuery返回的受影响的行进行比较