Задача, которую я вижу с решением:
FROM(
SELECT top(100) *
FROM Customers
UNION
SELECT top(100) *
FROM CustomerEurope
UNION
SELECT top(100) *
FROM CustomerAsia
UNION
SELECT top(100) *
FROM CustomerAmericas
)
заключается в том, что это создает оконный набор данных, который будет находиться в ОЗУ, а для больших наборов данных это решение создаст серьезные проблемы с производительностью, поскольку сначала необходимо создать раздел, а затем использовать раздел для записи во временную таблицу.
Лучшим решением было бы следующее:
SELECT top(100)* into #tmpFerdeen
FROM Customers
Insert into #tmpFerdeen
SELECT top(100)*
FROM CustomerEurope
Insert into #tmpFerdeen
SELECT top(100)*
FROM CustomerAsia
Insert into #tmpFerdeen
SELECT top(100)*
FROM CustomerAmericas
выбрать вставку во временную таблицу, а затем добавить дополнительные строки. Однако недостаток здесь в том, что в данных есть какие-то повторяющиеся строки.
Лучшее решение будет следующим:
Insert into #tmpFerdeen
SELECT top(100)*
FROM Customers
UNION
SELECT top(100)*
FROM CustomerEurope
UNION
SELECT top(100)*
FROM CustomerAsia
UNION
SELECT top(100)*
FROM CustomerAmericas
Этот метод должен работать для всех целей, которые требуют отдельных строк. Однако, если вы хотите, чтобы дублирующиеся строки просто меняли UNION на UNION ALL
Удачи!