Похоже, корень проблемы в том, что SELECT from #temporal
- это проблема производительности. У вас есть индекс для этой временной таблицы #temporal
? Вероятно, индекс (или обновление статистики) поможет вам избежать написания большего количества кода для решения этой проблемы.
Вы можете или пытались измерить производительность по сравнению с сохранением результатов этого #temporal
SELECT в табличной переменной?
DECLARE @myTemporal TABLE (id int, foo varchar(100))
INSERT INTO @myTemporal (id, foo)
SELECT id, foo FROM #temporal;
Тогда ваши n INSERT могут извлекать из табличной переменной, а не дорогой / неформатный запрос.
Insert into #table1 select id, foo from @myTemporal;
Insert into #table2 select id, foo from @myTemporal;
Insert into #table3 select id, foo from @myTemporal;
Преимущество заключается в том, что вам не нужно будет выполнять SELECT 3x для вашей временной таблицы. Вы будете вставлять в ваши 3 временные таблицы из табличной переменной. Все строки, без предложения WHERE.