Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

Séquence vs identité

Je pense que vous trouverez votre réponse ici

En utilisant l'attribut d'identité pour une colonne, vous pouvez facilement générer des nombres auto-incrémentés (qui sont souvent utilisés comme clé primaire). WithSequence, ce sera un objet différent que vous pouvez attacher à une colonne de table lors de l'insertion. Contrairement à l'identité, le nombre suivant pour la valeur de la colonne sera extrait de la mémoire plutôt que du disque, ce qui rend Sequence nettement plus rapide qu'Identity. Nous verrons cela dans de prochains exemples.

Et ici :

Séquences :les séquences sont demandées par la communauté SQL Server depuis des années et sont incluses dans cette version. La séquence est un objet défini par l'utilisateur qui génère une séquence d'un nombre. Voici un exemple utilisant Séquence.

et ici aussi :

Un objet de séquence SQL Server génère une séquence de nombres comme une colonne d'identité dans les tables sql. Mais l'avantage des numéros de séquence est que l'objet numéro de séquence n'est pas limité à une seule table sql.

et sur msdn, vous pouvez également en savoir plus sur l'utilisation et pourquoi nous en avons besoin (ici):

Une séquence est un objet lié au schéma défini par l'utilisateur qui génère une séquence de valeurs numériques selon la spécification avec laquelle la séquence a été créée. La séquence de valeurs numériques est générée dans un ordre croissant ou décroissant à un intervalle défini et peut être cyclique (répétée) comme demandé. Les séquences, contrairement aux colonnes d'identité, ne sont pas associées aux tables. Une application se réfère à un objet séquence pour recevoir sa valeur suivante. La relation entre les séquences et les tables est contrôlée par l'application. Les applications utilisateur peuvent référencer un objet de séquence et coordonner les clés de valeurs sur plusieurs lignes et tables.

Une séquence est créée indépendamment des tables à l'aide de l'instruction CREATESEQUENCE. Les options vous permettent de contrôler l'incrément, les valeurs maximales et minimales, le point de départ, la capacité de redémarrage automatique et la mise en cache pour améliorer les performances. Pour plus d'informations sur les options, voir CRÉER SÉQUENCE.

Contrairement aux valeurs de colonne d'identité, qui sont générées lorsque des lignes sont insérées, une application peut obtenir le numéro de séquence suivant avant d'insérer la ligne en appelant la fonction NEXT VALUE FOR. Le numéro de séquence est alloué lorsque NEXT VALUE FOR est appelé même si le numéro n'est jamais inséré dans une table. La fonction NEXT VALUE FOR peut être utilisée comme valeur par défaut pour une colonne dans une définition de table. Utilisez sp_sequence_get_range pour obtenir une plage de plusieurs numéros de séquence à la fois.

Une séquence peut être définie comme n'importe quel type de données entier. Si le type de données n'est pas spécifié, une séquence par défaut est bigint.