У меня есть собственный инструмент импорта, который массово вставляет данные в темп (421776 строк). После этого инструмент вставляет неизвестные строки в целевую таблицу и обновляет существующие строки на основе хеш-ключа (комбинации двух столбцов). Целевая БД имеет почти такое же количество строк. Запрос на обновление выглядит примерно так (примерно на 20 столбцов обновления меньше)
update targetTable set
theDB.dbo.targetTable.code=temp.code,
theDB.dbo.targetTable.name=temp.name,
from [tempDB].[dbo].[targettable] as temp
where theDB.dbo.targetTable.hash=temp.hash COLLATE SQL_Latin1_General_CP1_CI_AS
Я знаю, что сравнение nvarchar с сопоставлением немного плохое, но его нелегко избежать. Тем не менее, хеш-столбец имеет собственный уникальный индекс. Также локально это работает хорошо, но на этом моем сервере временная БД продолжает расти до 21 гигабайта. Переиндексация и сжатие не будут работать вообще.
Просто примечание для тех, кто сталкивается с проблемами tempdb. Хорошо читать http://bradmcgehee.com/wp-content/uploads/presentations/Optimizing_tempdb_Performance_chicago.pdf
theDB
? - person Martin Smith   schedule 03.05.2011the theDB
, так как весь процесс похож на «запустил и забыл». Спасибо! - person Casper Broeren   schedule 04.05.2011