Проблема, яку я бачу у вирішенні:
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
Удачі!