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

SQL Server BIGINT o DECIMAL(18,0) para la clave principal

Obtienes este rango con bigint:

-2^63 to 2^63-1 

also known as roughly:

-9.2 x 10^18 to 9.2 x 10^18

Obtienes este rango con decimal(18,0) :

-10^18 to 10^18

Decimal:bytes de almacenamiento por precisión

Precision    Storage Bytes
1-9:         5
10-19:       9
20-28:       13
29-38:       17

Tipos de enteros y bytes de almacenamiento

integer type    Storage Bytes
bigint          8
int             4
smallint        2
tinyint         1

Pensamientos

Los dos ejemplos publicados en su Pregunta en realidad producen prácticamente la misma cantidad de valores únicos.

Además, no verá un cambio significativo en el rendimiento sin importar su elección, pero verá un cambio en la eficiencia para otros programadores del equipo si comienza a usar decimales donde los programadores esperan un número entero. Este es un punto menor.

Para abordar su problema específico, si desea un rango mayor, use Decimal (38,0). Esto te da:

-10^38 to 10^38

Si le preocupa la velocidad, utilice la precisión mínima que durará la vida útil de su software.

Si no está midiendo el tiempo en nanosegundos, elija la opción que mejor se adapte a la mentalidad de sus programadores y a su deseo de tener un conjunto muy largo de números.

Referencias