我想将约数百万(或数百万个)记录更新到我的数据库中,但是速度非常慢。我花了几个小时才更新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分钟内更新。
答案 0 :(得分:0)
更新将花费太多时间,根据我的个人经验,我告诉您,如果您的数据量超过10k,请不要进行更新。更好的方法是
为该字段写一个子查询,并尝试获取必须使用表中的旧数据更新的值。
将此选择查询转换为视图,如果您是刚创建视图,则只需检查结构here
希望我已经回答了你的问题。请尝试给我反馈。