Разделить запрос вставки на несколько запросов

#sql-server #stored-procedures #ssms #sql-insert

#sql-сервер #хранимые процедуры #ssms #sql-вставка

Вопрос:

У меня есть SP, который объединяет данные в соответствии с несколькими правилами внутри. теперь мне нужно запустить свой SP за последние 3 года, но для запуска в течение одного месяца требуется 30 минут. итак, я умножил код SP (т.Е. SP_2019, SP_2018, SP_2019), и эти SP вставляются в каждую таблицу лет (tbl_2018, tbl_2019, tbl_2020). мой план заключался в том, чтобы вставить эти 3 таблицы в мою конечную целевую таблицу после всех вычислений, выполненных отдельно.

после этого я запускаю эти 3 SPS в разных сеансах одновременно в течение месяца (201801,201901,202001), теперь каждый из них занимает 65-70 минут.

почему он увеличился? из-за того, что все 3 SPS используют одни и те же исходные таблицы? я ожидал, что все сеансы закончатся через 30 минут.

Комментарии:

1. Вам нужно будет показать нам код SP и / или план выполнения ( brentozar.com/pastetheplan ) Проверьте это, это может иметь какое-то отношение? youtube.com/watch?v=dput2VvuY1w

2. Эти симптомы ожидаемы, если у вас есть ограничения на пропускную способность процессора или ввода-вывода / IOPS. Запуск 3 параллельных процессов вместо 1 в этом случае не улучшит пропускную способность. Чтобы повысить производительность, начните с настройки индекса запроса и, если вы еще этого не сделали.

3. ваше предположение отчасти верно. поделитесь своим кодом и планом, чтобы мы могли его оптимизировать.