首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >批量/批量SQL server更新

批量/批量SQL server更新
EN

Stack Overflow用户
提问于 2013-04-03 01:19:06
回答 2查看 1.4K关注 0票数 0

代码

代码语言:javascript
复制
foreach (var item in _context.Duiven.
                .Include(p => p.Duivenmelker.VoedselInstelling)
                .Include(p => p.VoedselHistoriek)
                .Include(p => p.Duivenmelker.Personeel)
                .Include("Ziektes.DuifZiekte")
                .ToList() // 25.000)
            {
                item.FoodHistory();
                item.HealthSimulation();
                item.DiseaseSimulation(diseaseTypes);
                item.CureSimulation(_context);
                item.DeathSimulation();
                item.Feed();
}

_context.SaveChanges()

问题

上面的代码通过aprox循环。25000个项目。它更新这些对象上的所有内容(这个过程大约需要10分钟)问题出在将所有这些更改保存到数据库中,这几乎需要2个小时。

它可能会逐一更新(sql)每一次更改?(这是sql azure)该过程还包括删除25000条记录和插入25000条新记录(4个整型)

通过包含大量需要的内容,我减少了对数据库的调用。但我发现不是过程,而是省钱花了这么长时间:

问题

更新记录中的所有值与删除当前值并插入新值在性能上是否存在差异

我怎样才能更好地将其保存到数据库中?比如10分钟而不是160分钟?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-04-03 01:23:58

Entity Framework不太适合批量更新。

我也处于同样的情况,最终重写了我的批量更新逻辑,以便在存储过程中使用ADO.Net。对于我的特定用例,性能提升约为10倍。

另一种选择可能是SqlBulkCopy,这取决于您的实际情况。

票数 3
EN

Stack Overflow用户

发布于 2013-04-03 01:25:15

有一些技巧你可以使用,比如每100个操作才提交一次。

但是,对于从ORM执行速度太慢的数据库操作,我总是不得不为其编写存储过程。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15770262

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档