MySQL + EF更新很慢吗?

时间:2018-07-10 17:27:36

标签: mysql entity-framework updates

我想将约数百万(或数百万个)记录更新到我的数据库中,但是速度非常慢。我花了几个小时才更新100,000。你们有什么主意吗? 基本上,我可以加密特定的列值,然后再将其更新回数据库。由于代码集成依赖性,我无法在数据库级别执行此操作。

示例代码:

dbContext.Configuration.AutoDetectChangesEnabled = false;

List<Users> usersLst = dbContext.Users.AsNoTracking().Take(500000).ToList(); 

foreach (var usr in usersLst) { 
     usr.Password = this.Encrypt(usr.Password); 
     dataContext.Entry(consumer).State = System.Data.Entity.EntityState.Modified;
}

dbContext.SaveChanges();

注意:-我尝试使用SQL Server,它的速度要快得多。 1M记录在15-20分钟内更新。

1 个答案:

答案 0 :(得分:0)

更新将花费太多时间,根据我的个人经验,我告诉您,如果您的数据量超过10k,请不要进行更新。更好的方法是

  1. 为该字段写一个子查询,并尝试获取必须使用表中的旧数据更新的值。

  2. 将此选择查询转换为视图,如果您是刚创建视图,则只需检查结构here

  3. 现在编写一个插入查询,您将从其中刚创建的视图中获取值。
  4. 插入不会花费太多时间,对我来说,花10分钟从视图中的表中插入1千万数据。
  5. 即使您觉得时间太长,也可以在mysql中使用触发器进行此插入,只需3到4分钟。

希望我已经回答了你的问题。请尝试给我反馈。