У меня на работе есть движение отойти от использования #temp таблиц и вместо этого использовать постоянные физические таблицы с SPID. Всякий раз, когда кто-то ранее вставлял в таблицу #temp, теперь INSERT INTO dbo.MyPermanentTable (SPID, ...) VALUES (@@SPID, ...)
требуется an - вместе с кучей DELETE FROM dbo.MyPermanentTable WHERE SPID = @@SPID
операторов в начале, например, хранимой процедуры. Кроме того, само собой разумеется, что везде, где используются эти «постоянные таблицы для хранения временных данных», нужно быть осторожным, чтобы включить WHERE SPID = @@SPID
.
Логика, лежащая в основе этой практики, заключается в том, что она улучшит общую производительность сервера, на котором выполняются запросы (за счет уменьшения количества операций ввода-вывода и конфликтов в базе данных tempdb). Я не заинтересован в таком подходе по ряду причин - он уродлив, потенциально опасен и кажется, что он может сильно повредить производительности тех запросов, которые используют новую схему.
У кого-нибудь есть опыт использования этого или подобных подходов к устранению таблиц #temp?