Die Herausforderung, die ich mit der Lösung sehe:
FROM(
SELECT top(100) *
FROM Customers
UNION
SELECT top(100) *
FROM CustomerEurope
UNION
SELECT top(100) *
FROM CustomerAsia
UNION
SELECT top(100) *
FROM CustomerAmericas
)
ist, dass dadurch ein Datensatz mit Fenster erstellt wird, der sich im RAM befindet. Bei größeren Datensätzen führt diese Lösung zu schwerwiegenden Leistungsproblemen, da zuerst die Partition erstellt werden muss und dann die Partition zum Schreiben in die temporäre Tabelle verwendet wird.
Eine bessere Lösung wäre die folgende:
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
um Einfügen in die temporäre Tabelle auszuwählen und dann zusätzliche Zeilen hinzuzufügen. Der Nachteil hierbei ist jedoch, dass die Daten doppelte Zeilen enthalten.
Die beste Lösung wäre die folgende:
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
Diese Methode sollte für alle Zwecke funktionieren, für die unterschiedliche Zeilen erforderlich sind. Wenn Sie jedoch möchten, dass die doppelten Zeilen einfach die UNION gegen UNION ALL austauschen
Viel Glück!