Делаю bulk insert (примерно 3,5 млн строк) во временную таблицу.
Потом мержу ее с основной таблицей (тоже примерно 3,5 млн строк).
insert выполняется быстро, а вот merge — тормозит.
Причем бОльшую часть времени он находится в состоянии SUSPENDED c типом ожидания PAGEIOLATCH_EX.
Что мне непонятно: если я все то же самое проделываю через SSMS — все работает быстро. merge не висит в ожидании.
Разница только в том, что временную таблицу я просто заполняю из другой (без использования bulk insert).
Само собой, что нужные индексы в целевой таблице есть, во временной таблице после заполнения индексы тоже создаю.
Куда копать? В чем может быть причина тормозов?
Планы запросов практически одинаковые в обоих случаях.
Здравствуйте, Андрей, Вы писали:
А>Куда копать? В чем может быть причина тормозов? А>Планы запросов практически одинаковые в обоих случаях.
Т.е. все-таки отличие есть. А в чем оно заключается? По идее они должны полностью совпадать, за исключением числовых показателей, которые могут отличаться из-за различия обрабатываемых данных.
Здравствуйте, Olaf, Вы писали:
O>Здравствуйте, Андрей, Вы писали:
А>>Куда копать? В чем может быть причина тормозов? А>>Планы запросов практически одинаковые в обоих случаях.
O>Т.е. все-таки отличие есть. А в чем оно заключается? По идее они должны полностью совпадать, за исключением числовых показателей, которые могут отличаться из-за различия обрабатываемых данных.
Ну вот это я и имел ввиду — различия только в числах. И то небольшие.