Недавно я перевел мою .NET-разработку с более старого ПК Core2Duo 2,93 ГГц на новый процессор Core i7-3820 с частотой 3,6 ГГц. Никакие изменения не были внесены в код проекта или макет базы данных. Обе машины используют один и тот же SQL Server 2012 Express с расширенными службами (а не LocalDB).SQL Server 2012 slow
Я наблюдаю значительное замедление команд INSERT INTO: то, что раньше использовалось на старом компьютере, составляло 1-2 миллисекунды в секунду, теперь оно занимает 8-9 миллисекунд на новом. Единственное исправление, которое я смог найти, заключалось в том, чтобы использовать несколько строк в одной команде, что, по-видимому, увеличивает накладные расходы команды на многие строки. Как и в SQL Server 2008 R2, в SQL Server 2012 ограничение на количество строк в одной такой команде равно 1000: http://msdn.microsoft.com/en-us/library/dd776382.aspx
Однако способ обхода нескольких строк не применим ко всем сценариям; например обновления адаптера таблицы, которые идут по строкам и занимают много времени.
У кого-нибудь возникла эта проблема? Как я могу это решить?
Вы обновили статистику после обновления? Вы установили уровень совместимости на 110? –
Также, как подсказывает @buckley, вы должны посмотреть на использование табличных параметров вместо табличных адаптеров. http://www.sommarskog.se/arrays-in-sql-2008.html#TVP_in_TSQL –
Аарон: можете ли вы уточнить рекомендации по статистике? Я не на уровне экспертов с SQL Server. – user1408140