Большой запрос увеличивает TempDB

У меня огромный запрос на моем сервере SQL 2005. Это нужно запускать один раз в день, но когда этот запрос выполняется, temp db увеличивается с 2 ГБ до 48 ГБ. Как лучше всего оптимизировать или найти причину роста базы данных tempdb, когда этот запрос добавляет / обновляет записи по 80 КБ (~120 столбцов) в одной таблице?

Что мне делать в этом запросе, чтобы tempdb не рос так сильно?

Любые предложения будут оценены.

ПРИМЕЧАНИЕ. В этом запросе нет никаких таблиц переменных или табличных переменных или CTE. просто куча

INSERT INTO ... with MULTITABLE JOINS with SUBQueries...

2 ответа

Решение

Не видя точного кода, вам трудно помочь. Но, похоже, запрос должен быть оптимизирован.

Конечно, вы можете просто изменить свою временную базу данных, чтобы она оставалась равной 48 ГБ, по крайней мере, так, как она выиграет, не нужно времени, чтобы расти, когда эта штука запускается.

Вы можете посмотреть на это. Вполне вероятно, что ваш запрос использует временную таблицу для выполнения, но очень трудно сказать, ничего не зная об этом.

Глядя на обновление вашего вопроса, кажется вероятным, что ваши подзапросы используют заманчивую стратегию, которая затопляет вашу TempDB. Постарайтесь избавиться от этих подзапросов и / или уменьшить объем данных, с которыми вы работаете, за один запуск запроса, который поможет уменьшить рост вашей TempDB.

Другие вопросы по тегам