与传统 SQL Insert 语句相比,LINQ Insertonsubmit 非常慢

Did*_*evy 3 performance submitchanges linq-to-sql

我有一个很大的插入工作要执行,比如说 300000 个插入。

如果我采用传统方式,我只需编写一个包含 100 个 Insert 语句块的 SQL 字符串,并对数据库执行一个executeCommand(每条记录 100 条)。

每 3 秒左右大约可以插入 100 次。

当然,现在插入的值中存在单引号和 CrLf 的问题。因此,我没有编写代码来加倍单引号等,因为我很懒,所以我尝试使用 Linq InsertOnSubmit 和一个 context.SublitChanges 彼此 100 行。

这比传统方式多花费 20 倍!

为什么?

jas*_*son 5

您没有使用正确的工具来完成这项工作。LINQ-to-SQL 和大多数其他 ORM(至少是 Entity Framework 和 NHibernate)适用于 OLTP 场景,它们不适用于批量数据操作,并且在用于批量数据操作时执行速度会很慢。

你应该使用SqlBulkCopy.