Oracle 批量插入使用 dapper 运行缓慢

法提赫耶尔德勒姆

当我们按照文档中的说明使用 Oracle 执行批量插入时,它在 10 秒内传输了 200 条数据。我怎样才能更有效地做到这一点?

public async Task InsertAsync()
{
    var items = GetItems();
    using var connection = OpenOracleConnection();
    var transaction = connection.BeginTransaction();
    await connection.ExecuteAsync(@"insert into TableName
    (Column1, Column2, Column3, Column4, Column5, Column6, Column7, Column8 ,Column9, Column10) VALUES 
    (:p1, :p2, :p3, :p4, :p5, :p6, :p7, :p8, :p9, :p10) ", items, transaction: transaction);

    transaction.Commit();
}


private static IEnumerable<object> GetItems()
{
    var list = new List<object>();
    for (int i = 0; i < 200; i++)
    {
        list.Add(new
        {
            p1 = new Random().Next(0,999999),
            p2 = 1,
            p3 = "-",
            p4 = "--",
            p5 = "--",
            p6 = "---",
            p7 = "----",
            p8 = DateTime.Now,
            p9 = "-",
            p10 = 1
        });
    }
    return list;
}
乔纳森·马格南

您当前的代码并没有真正执行Bulk Insertion. 它一次插入列表中的每个项目

BulkInsert如果您真的想以最快的性能在 Oracle 中进行操作,请了解数组绑定插入。

免责声明:我是Dapper Plus项目的所有者

这个项目不是免费的,但可以让您轻松地在 Oracle 中进行批量插入(也可以在后台使用数组绑定)。

// Your mapping
DapperPlusManager.Entity<TEntity>().ToTable("TableName")

// ...code...

transaction.BulkInsert(items)

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章