insert select....
Запрос инсертит выборку с условиями, примерно 11-12 млн строк. Работает часа полтора. При этом в своей работе судя по мониторингу машины СУБД, дай бог задействуется одно ядро, и то по ощущениям даже одно не утилизировано. А машина относительно мощная, 40 ядер. Подскажите пожалуйста, можно ли как-то принудительно распараллелить запрос ? Версия сервера 2012
Фрагмент фактического плана запроса с основными костами прилагаю. Видно что основное время занимает именно инсерт.
вы нарочно сервер не обновляете?
К сожалению это не от меня зависит. Я не сопровождаю эту базу.
Выполните select отдельно от инсерта. По картинке не очевидно, что проблема в инсерте.
начните с создания копии принимающей таблицы и проверки вставки в неё для начала без индексов вообще потом только с кластерным замерьте время
Мне кажется что мой клиент умрет от 11 млн записей. Не знаю точно как это можно корректно сделать.
Спасибо попробую. Я делал вставку в полную копию таблицы (пустую) это заняло 45 минут против 60. В таблице оригинальной миллионов 20 записей было емнип. Кажется она партиционирована по датам. Но там ее наполнение довольно динамично, ещё не во все особенности погрузился
всё это как-то чудовищно долго для 23 года и крепнет подозрение, что и с селектом у вас не всё гладко
Попробуйте вариант select ... into #temp
Там может быть выборка с другого сервера, не удивлюсь.
вставляй пакетно, а не 11 миллионов в раз
Сделал вставку в копию табло без индексов. План запроса получился другой, работало 45 минут вместо 60.
А сколько мегабайт занимает результирующая таблица и что со скоростью диска под ней?
С диском проблем не вижу, 18:41 начало запроса 19:28 конец
Обсуждают сегодня