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