Ich erstelle einige Testdaten für einen Client in Form von Customer -< Booking
und was ich versuche zu erreichen, ist eine zufällige Anzahl von Buchungen pro Kunde (zwischen 1 und 25) zu generieren.Zufällige Kardinalität der Zeilen pro Elternzeile
Nachdem sie bereits generierten Testdaten für den Customer
Tisch, ich dachte, ich n <= ABS(CHECKSUM(NEWID())) % 25
als Join-Bedingung zu einer Zahlen-Tabelle verwenden könnte den Zufall Mächtigkeit pro Zeile zu erzeugen, jedoch muss mein Versuch sehr suboptimal, weil es mehr als 15 Minuten dauert ist zu Rückkehr. Im Idealfall möchte ich diese wenn möglich auf unter 2 Minuten reduzieren.
Mein gepflasterte Versuch ist wie folgt:
;WITH CTE_BookingCounts AS (
SELECT
CustomerId,
ABS(CHECKSUM(NEWID())) % 25 AS R
FROM dbo.Customer
)
SELECT
B.CustomerId,
N.n AS BookingIndex
FROM dbo.Customer C
INNER JOIN CTE_BookingCounts BC ON BC.CustomerId = C.CustomerId
INNER JOIN #numbers N ON N.n <= BC.R;
Bitte könnte jemand empfehlen, wie ich diese Abfrage restrukturieren oder sogar einen ganz anderen Ansatz, wenn es vorhanden ist?
Danke für die Antwort, aber ich bin verwirrt, ob Sie vorschlagen, ich sollte die CTE oder die #numbers Tabelle fallen lassen. –
@ChrisPickford. . . Ich war selbst verwirrt. Die Idee ist, den CTE loszuwerden, nicht die Nummerntabelle. –