Вообще говоря, для объединения большого количества данных это лучше для использования временной переменной таблицы/временного файла в качестве района сосредоточения войск, или я должен просто придерживаться "ОБЪЕДИНЕНИЯ ВСЕ"?
Предположения:
Я бы придерживался UNION ALL. Если нет необходимости выполнять промежуточную обработку, поэтому требуется временная таблица, я бы ее не использовал.
Вставка данных во временную таблицу (даже если это табличная переменная, которая, несмотря на мифы, не является чисто структурой «в памяти»), потребуется работа в базе данных tempdb (что может быть узким местом). Затем просто SELECT * as-is и возвращать его без какой-либо специальной обработки не нужно, и я думаю, что код раздувается. Когда вам просто нужно вернуть данные без какой-либо специальной обработки, тогда подход с временными таблицами кажется немного "универсальным". Если бы я думал, что есть причина для оправдания использования временной таблицы, я бы провел несколько тестов производительности для сравнения с vs без временных таблиц, а затем сравнил бы статистику (продолжительность, чтение, запись, ЦП). Проведение реальных тестов производительности - лучший способ быть максимально уверенным в том, что какой бы подход вы ни выбрали, он будет лучшим. Тем более, что вам не нужно использовать временные таблицы, чтобы работа была перенесена в tempdb, т.е. в зависимости от ваших запросов, это может в любом случае включать работу в tempdb.
Чтобы уточнить, я не говорю, что одна точка лучше другой точки. Как и в большинстве случаев, это зависит от сценария. В описанном сценарии это просто звучит так, как будто вы добавляете дополнительный шаг, который, похоже, не добавляет какой-либо функциональной ценности, и я не вижу, что вы получите что-либо, кроме создания немного более сложного / длинного запроса.
Одно из преимуществ временных таблиц, о котором я могу думать, заключается в том, что вы можете применять к ним индексы . Так что это должно помочь при работе с большим количеством данных, когда вам нужно получить результаты как можно быстрее.
Не относится к объединению всех ..
Использование временной таблицы может иметь преимущество по сравнению с точкой обзора параллелизма в зависимости от запроса, уровня изоляции и производительности клиентов / net, где использование временной таблицы может помочь минимизировать время блокировки чтения. Только не используйте SELECT ..INTO .. для создания таблицы.
В общем случае UNION ALL позволяет избежать накладных расходов на ненужную рабочую таблицу.