我想在我的数据库中更新大约数百万条记录,但速度非常慢。我花了几个小时才更新了10万个。你们有什么想法吗?基本上我有一个过程来加密特定的列值,然后将其更新回数据库。我不能在数据库级别这样做,因为代码集成依赖性。
示例代码:
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,速度快得多。15-20分钟内更新100万条记录。
1条答案
按热度按时间o75abkj41#
更新将需要太多的时间,从我的个人经验,我告诉你,不要更新,如果你有超过10公里的数据。更好的方法是
为该字段编写一个子查询,并尝试使用表中的旧数据获取要更新的值。
如果您在创建视图方面是新手,请将此select查询转换为视图。。检查一下这里的结构
现在编写一个insert查询,在这个查询中,您将从刚才创建的视图中获取值。
插入不会花费太多时间,对我来说,从视图中插入一个表中的1千万数据需要10分钟。
即使你觉得这是太多的时间,你可以做这个插入使用触发器在mysql,这将只需要3或4分钟。
希望我已经回答了你的问题。试着给我一个反馈。