Wyzwanie, które widzę w rozwiązaniu:
FROM(
SELECT top(100) *
FROM Customers
UNION
SELECT top(100) *
FROM CustomerEurope
UNION
SELECT top(100) *
FROM CustomerAsia
UNION
SELECT top(100) *
FROM CustomerAmericas
)
polega na tym, że tworzy to zestaw danych w oknie, który będzie rezydował w pamięci RAM, a przy większych zestawach danych to rozwiązanie spowoduje poważne problemy z wydajnością, ponieważ najpierw musi utworzyć partycję, a następnie użyje partycji do zapisu w tabeli tymczasowej.
Lepszym rozwiązaniem byłoby:
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
aby wybrać wstaw do tabeli tymczasowej, a następnie dodaj dodatkowe wiersze. Jednak wada polega na tym, że w danych występują zduplikowane wiersze.
Najlepszym rozwiązaniem byłoby:
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
Ta metoda powinna działać do wszystkich celów, które wymagają odrębnych wierszy. Jeśli jednak chcesz, aby zduplikowane wiersze po prostu zamień UNION na UNION ALL
Powodzenia!