Sprytne (i szybkie) wygenerowanie tabeli z liczbami od 1 do N (tally table)

Jeżeli potrzebowaliście kiedyś wygenerować na szybko do testów sporą ilość wierszy lub chcieliście otrzymać liczby rosnąco w postaci wierszy (joinowanie numeracji, sprawdzanie ciaglosci numeracji i inne kombinacje ;]) to istnieje sposób na stosunkowo szybkie zaspokojenie takiej potrzeby 😀

Z pomocą przychodzi nam CTE i funkcja okienkowa numerująca dane wygenerowane przez self-join’y, które zwracają olbrzymie ilości rekordów.
Poniższy przykład jest w stanie wygenerować aż 4,294,967,296 wierszy (każdy rekord zwraca wartość 0).

Metoda jest dosyć prosta i znana w świecie community sql server ;] Jej autorem jest Itzik Ben-Gan (tsql.solidq.com).

Poniżej przykład wygenerowania tempówki zawierającej 100.000.000 rekordów z liczbami od 1 do 100000000 trwający ~ 1m20sek na dość szybkim serwerze.

 

 

POST PIERWOTNIE OPUBLIKOWANY JAKO TSQL NA DZIŚ #15

Dodaj komentarz