sql >> Base de Datos >  >> RDS >> Sqlserver

Secuencia vs identidad

Creo que encontrarás tu respuesta aquí

Usando el atributo de identidad para una columna, puede generar fácilmente números de incremento automático (que a menudo se usan como clave principal). Con Secuencia, será un objeto diferente que puede adjuntar a una columna de la tabla mientras lo inserta. A diferencia de la identidad, el siguiente número para el valor de la columna se recuperará de la memoria en lugar del disco; esto hace que la Secuencia sea significativamente más rápida que la Identidad. Veremos esto en próximos ejemplos.

Y aquí:

Secuencias:la comunidad de SQL Server ha solicitado secuencias durante años y se incluye en esta versión. La secuencia es un objeto definido por el usuario que genera una secuencia de un número. Aquí hay un ejemplo usando Sequence.

y aquí también:

Un objeto de secuencia de SQL Server genera una secuencia de números como una columna de identidad en las tablas SQL. Pero la ventaja de los números de secuencia es que el objeto de número de secuencia no está limitado a una sola tabla sql.

y en msdn también puede leer más sobre el uso y por qué lo necesitamos (aquí):

Una secuencia es un objeto vinculado a un esquema definido por el usuario que genera una secuencia de valores numéricos de acuerdo con la especificación con la que se creó la secuencia. La secuencia de valores numéricos se genera en orden ascendente o descendente en un intervalo definido y puede ciclar (repetir) según se solicite. Las secuencias, a diferencia de las columnas de identidad, no están asociadas con tablas. Una aplicación hace referencia a un objeto de secuencia para recibir su siguiente valor. La relación entre secuencias y tablas es controlada por la aplicación. Las aplicaciones de usuario pueden hacer referencia a un objeto de secuencia y coordinar las claves de valores en varias filas y tablas.

Una secuencia se crea independientemente de las tablas mediante la instrucción CREATESEQUENCE. Las opciones le permiten controlar el incremento, los valores máximo y mínimo, el punto de inicio, la capacidad de reinicio automático y el almacenamiento en caché para mejorar el rendimiento. Para obtener información sobre las opciones, consulte CREAR SECUENCIA.

A diferencia de los valores de columna de identidad, que se generan cuando se insertan filas, una aplicación puede obtener el siguiente número de secuencia antes de insertar la fila llamando a la función PRÓXIMO VALOR PARA. El número de secuencia se asigna cuando se llama a NEXT VALUE FOR incluso si el número nunca se inserta en una tabla. La función NEXT VALUE FOR se puede usar como el valor predeterminado para una columna en una definición de tabla. Usesp_sequence_get_range para obtener un rango de múltiples números de secuencia a la vez.

Una secuencia se puede definir como cualquier tipo de datos enteros. Si no se especifica el tipo de datos, una secuencia predeterminada es bigint.