Во-первых, вы, вероятно, не хотите использовать глобальную временную таблицу.Их утилита очень ограничена.
Чтобы уменьшить ведение журнала, вы можете сделать следующее:
select *
into #SendRecipients2
from #SendRecipients
WHERE Id IN (SELECT RecipientId FROM MyDB.dbo.Results)
Что должно быть минимально зарегистрировано, или если вы не участвуете в явной транзакции
while 1=1
begin
DELETE top (10000) FROM #SendRecipients
WHERE Id NOT IN (SELECT RecipientId FROM MyDB.dbo.Results)
if @@rowcount = 0 break;
end
, что позволит повторно использовать пространство журнала транзакций для каждого оператора.
Другой вариант - использовать переменную таблицы вместо временной таблицы.Изменения в табличных переменных никогда не регистрируются.