Я хочу обновить около миллионов (или половину миллионов) записей в моей базе данных, но это было очень медленно. На обновление всего 100000 у меня ушло пару часов. У вас есть идеи, ребята? В основном у меня есть процесс для шифрования определенного значения столбца, а затем его обновления в базе данных. Я не могу сделать это на уровне базы данных из-за зависимости от интеграции кода.
образец кода:
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 минут.
Обновил мой пример кода.






Обновление займет слишком много времени. По моему личному опыту, я говорю: не обновляйте, если у вас больше 10 КБ данных. Лучший способ
Напишите дополнительный запрос для этого поля и попытайтесь получить значения, которые вам нужно обновить, используя старые данные из вашей таблицы.
Преобразуйте этот запрос выбора в представление. Если вы новичок в создании представления ... просто проверьте структуру здесь
Надеюсь, я ответил на ваш вопрос. Просто попробуйте и дайте мне обратную связь.
Мой код .net с использованием EntityFramework выполняет все обновления данных. Я не уверен, как я могу это сделать, как вы упомянули выше, с помощью Views.
Это однократный ввод данных или каждый раз, когда вы должны делать это в своем приложении всякий раз, когда требуется какое-то действие?
Лучший код? Машина мощнее? На самом деле это все догадки, поскольку у нас нет кода, на который можно было бы смотреть. И даже если бы мы это сделали, вы единственный, кто мог бы протестировать его, чтобы увидеть, какой бит замедляет вас.