У меня есть запрос, который объединяет 6 таблиц, создает 800 000 строк и вставляет их в таблицу.
Я выполняю этот запрос в Sql 2005 Standard на 8-ядерном компьютере, на котором не выполняется другая рабочая нагрузка. Служба Sql использует только одно ядро ЦП при выполнении этого запроса (используя этот ЦП на 100%), и таким образом запрос выполняется почти 4 минуты.
Как я могу сделать так, чтобы мой запрос использовал все доступные процессоры?
Перестройка статистики не помогла. И были времена, когда этот запрос использовал все процессоры и работал значительно быстрее.
(В запросе также используются две скалярные функции TSQL, но это не должно быть проблемой, так как это было не раньше. Эти функции используют только свои параметры в вычислениях и не получают доступа к таблицам из базы данных. эти функции не должны препятствовать распараллеливанию запроса.)
(Может ли включение «изоляции зафиксированного моментального снимка для чтения» в базе данных вызвать такое поведение? Запрос был запущен до того, как я включил его, и с тех пор он работает на одном процессоре.)