У меня есть следующие настройки:Entity framework - сколько времени потребуется, чтобы добавить 75k строк?
- Table1 - 150К строк в настоящее время, нужно добавить еще 25k строк,
- TABLE2 - 300k строк, нужно добавить еще один 50k.
добавить строки в цикле, как и (EF-код первого):
using (var context = new MyDb())
{
loop() //25k rounds
{
var t3 = new Table2();
var t2 = new Table2();
var t1 = new Table1{prop1 = t2, prop2 = t3};
context.Table1.Add(t1);
context.SaveChanges();
}
}
Таким образом, цикл будет принимать 25k оказывается в общей сложности, и мое измерение производительности показывает мне, что это добавит эти строки примерно в десять часов! И теперь я понятия не имею, если это потому, что это нормальное время для такого рода операций с EF, или потому что что-то не так с моими dbms?
Это одноразовая вещь? Если так, EF, вероятно, не лучший выбор здесь. Но я собираюсь голосовать за закрытие, потому что, как долго это происходит, это основано на множестве факторов, таких как тип базы данных/размер/дизайн/индексируются ли таблицы и т. Д., Я думаю, слишком много, чтобы дать какой-либо вид полезный ответ. – JMK
Я бы предположил, что вы не должны «SaveChanges» каждый раз. Может быть, сделать это в 1к кусках? –
Переместить замкнутый цикл 'SaveChanges'? – Kami