Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

Sequenz vs. Identität

Ich denke, Sie werden Ihre Antwort hier finden

Mit dem Identitätsattribut für eine Spalte können Sie leicht automatisch inkrementierende Zahlen generieren (die häufig als Primärschlüssel verwendet werden). Bei Sequence handelt es sich um ein anderes Objekt, das Sie beim Einfügen an eine Tabellenspalte anhängen können. Im Gegensatz zu Identität wird die nächste Zahl für den Spaltenwert aus dem Speicher und nicht von der Festplatte abgerufen – dadurch ist Sequence deutlich schneller als Identität. Wir werden dies in den kommenden Beispielen sehen.

Und hier:

Sequenzen:Sequenzen werden seit Jahren von der SQL Server-Community angefordert und sind in dieser Version enthalten. Sequence ist ein benutzerdefiniertes Objekt, das eine Zahlenfolge generiert. Hier ist ein Beispiel für die Verwendung von Sequence.

und hier auch:

Ein SQL Server-Sequenzobjekt generiert Zahlenfolgen genau wie eine Identitätsspalte in SQL-Tabellen. Der Vorteil von Sequenznummern ist jedoch, dass das Sequenznummernobjekt nicht auf eine einzelne SQL-Tabelle beschränkt ist.

und auf msdn können Sie auch mehr über die Verwendung lesen und warum wir es brauchen (hier):

Eine Sequenz ist ein benutzerdefiniertes schemagebundenes Objekt, das eine Sequenz numerischer Werte gemäß der Spezifikation generiert, mit der die Sequenz erstellt wurde. Die Folge von numerischen Werten wird in aufsteigender oder absteigender Reihenfolge in einem definierten Intervall erzeugt und kann sich nach Bedarf wiederholen (wiederholen). Sequenzen sind im Gegensatz zu Identitätsspalten nicht Tabellen zugeordnet. Eine Anwendung bezieht sich auf ein Sequenzobjekt, um seinen nächsten Wert zu erhalten. Die Beziehung zwischen Sequenzen und Tabellen wird von der Anwendung gesteuert. Benutzeranwendungen können auf ein Sequenzobjekt verweisen und die Werteschlüssel über mehrere Zeilen und Tabellen hinweg koordinieren.

Eine Sequenz wird unabhängig von den Tabellen mit der CREATESEQUENCE-Anweisung erstellt. Mit Optionen können Sie das Inkrement, die Höchst- und Mindestwerte, den Startpunkt, die automatische Neustartfähigkeit und das Caching steuern, um die Leistung zu verbessern. Informationen zu den Optionen finden Sie unter SEQUENCE ERSTELLEN.

Im Gegensatz zu Identitätsspaltenwerten, die beim Einfügen von Zeilen generiert werden, kann eine Anwendung die nächste Sequenznummer abrufen, bevor die Zeile eingefügt wird, indem die Funktion NÄCHSTER WERT FÜR aufgerufen wird. Die Sequenznummer wird zugewiesen, wenn NEXT VALUE FOR aufgerufen wird, selbst wenn die Nummer niemals in eine Tabelle eingefügt wird. Die NEXT VALUE FOR-Funktion kann als Standardwert für eine Spalte in einer Tabellendefinition verwendet werden. Verwenden Sie sp_sequence_get_range, um einen Bereich mehrerer Sequenznummern auf einmal zu erhalten.

Eine Sequenz kann als ein beliebiger ganzzahliger Datentyp definiert werden. Wenn der Datentyp nicht angegeben ist, ist eine Sequenz standardmäßig bigint.