Здесь есть полезная статья , в которой говорится:
Как и во многих других областях техники, здесь нет «правильного» ответа. Для данных, которые не предназначены для сохранения за рамками процедуры, вы обычно выбираете между таблицами #temp и переменными таблиц. Ваше окончательное решение должно зависеть от производительности и разумного нагрузочного тестирования. По мере увеличения размера данных и / или увеличения повторного использования временных данных вы обнаружите, что использование таблиц #temp имеет больше смысла. В зависимости от вашей среды этот порог может быть где угодно - однако вам, очевидно, потребуется использовать таблицы #temp, если какое-либо из вышеуказанных ограничений представляет собой существенное препятствие.
Однако другим способом было бы иметь реальную таблицу, в которой строки, которые вам нужны в любой транзакции, обозначаются с помощью столбца GUID. Затем вам нужно будет передать только GUID в качестве параметра, который может улучшить производительность. Однако это может быть не вариант для вас.
Полагаю, вы просто опробуете оба варианта и посмотрите на SQL Profiler, чтобы увидеть, какие из вариантов обеспечивают наилучшую производительность.