Du får det här intervallet med bigint:
-2^63 to 2^63-1
also known as roughly:
-9.2 x 10^18 to 9.2 x 10^18
Du får det här intervallet med decimal(18,0) :
-10^18 to 10^18
Decimal:Lagringsbyte per precision
Precision Storage Bytes
1-9: 5
10-19: 9
20-28: 13
29-38: 17
Heltalstyper och lagringsbyte
integer type Storage Bytes
bigint 8
int 4
smallint 2
tinyint 1
Tankar
De två exemplen i din fråga ger faktiskt nästan samma mängd unika värden.
Dessutom kommer du inte att se en betydande prestandaförändring oavsett ditt val, men du kommer att se en förändring i effektivitet för andra programmerare i teamet om du börjar använda decimaler där programmerare förväntar sig ett heltal. Detta är en liten punkt.
För att lösa ditt specifika problem, om du vill ha ett större intervall, använd Decimal(38,0). Detta ger dig:
-10^38 to 10^38
Om du är orolig över hastigheten, använd den minsta precision som kommer att hålla hela din programvaras livstid.
Om du inte mäter tid i nano-sekunder, välj sedan det alternativ som passar bäst för dina programmerares tankesätt och din önskan att ha en mycket lång uppsättning siffror.
Referenser