Fortlaufende ID erstellen

B.Drescher

Benutzer
Beiträge
6
Hallo zusammen,

ich bin gerade dabei eine Tabelle mit Fortlaufender ID als PK zu erstellen.
Das ganze funktioniert ganz gut nur dauert es ewig.

Das Problem ist das ich 10 000 000 000 Leere Zeilen mit der ID benötige.

Was ich bis jetzt gemacht habe ist, das ich eine Tabelle erzeugt habe die einen PK hat der sich selbst um 1 erhöht.

DECLARE @i int = 0
WHILE @i < 1000000
BEGIN
SET @i = @i + 1
Insert Into *********** (station) values (NULL)
END

Damit benötige ich knapp 5 Minuten auf dem lokalen Testsystem und 40 Minuten in Azure.

Gibt es hier eine schnelle Möglichkeit diese Anzahl zu erzeugen, oder hat da jemand vielleicht eine Idee.

Danke schonmal im voraus.
 
Werbung:
In PostgreSQL gibt es für sowas generate_series() und das ist schnell:

Code:
test=*# create table bdrescher  (id int generated always as identity, val text default null);
CREATE TABLE
test=*# \timing
Timing is on.
test=*# insert into bdrescher (val) select null from generate_series(1,1000000) s;
INSERT 0 1000000
Time: 2440,187 ms (00:02,440)

Das geht also in 2,4 Sekunden. Für M$SQL gibt es evtl. diese Alternative: Does MS SQL Server have generate_series function
 
Werbung:
Ein Spaltentyp für Create Table soll da helfen?
mal gelesen, .. nicht ausgesprochen straight forward die Sache, ..
Hinweis

Die IDENTITY-Eigenschaft unterscheidet sich von der SQL-DMO-Eigenschaft IDENTITY, die die IDENTITY-Eigenschaft für Zeilen einer Spalte verfügbar macht.
Ahso!

..weiter..

Die Identitätseigenschaft für eine Spalte garantiert nicht Folgendes:
  • Eindeutigkeit des Werts: Die Eindeutigkeit muss mit einer PRIMARY KEY- oder UNIQUE-Einschränkung bzw. einem UNIQUE-Index erzwungen werden. -
lol, wie könnte man auch glauben, dass etwas was sich Identity nennt, per se eindeutig sein könnte..

Da fänd ich jetzt mal ein Beispiel spannend, wie man Identity analog zu generate_series nutzen kann.
 
Zurück
Oben