Diesen Bereich erhalten Sie mit bigint:
-2^63 to 2^63-1
also known as roughly:
-9.2 x 10^18 to 9.2 x 10^18
Sie erhalten diesen Bereich mit decimal(18,0) :
-10^18 to 10^18
Dezimal:Speicherbytes pro Genauigkeit
Precision Storage Bytes
1-9: 5
10-19: 9
20-28: 13
29-38: 17
Integer-Typen und Speicherbytes
integer type Storage Bytes
bigint 8
int 4
smallint 2
tinyint 1
Gedanken
Die beiden in Ihrer Frage geposteten Beispiele ergeben tatsächlich praktisch die gleiche Menge an eindeutigen Werten.
Außerdem werden Sie unabhängig von Ihrer Wahl keine signifikante Leistungsänderung feststellen, aber Sie werden eine Änderung der Effizienz für andere Programmierer im Team feststellen, wenn Sie anfangen, Dezimalzahlen zu verwenden, wo Programmierer eine ganze Zahl erwarten. Dies ist ein kleiner Punkt.
Um Ihr spezielles Problem zu lösen, verwenden Sie Decimal(38,0), wenn Sie einen größeren Bereich wünschen. Das ergibt:
-10^38 to 10^38
Wenn Sie sich Sorgen um die Geschwindigkeit machen, verwenden Sie die minimale Genauigkeit, die die Lebensdauer Ihrer Software überdauert.
Wenn Sie die Zeit nicht in Nanosekunden messen, wählen Sie die Option, die am besten zu den Denkweisen Ihrer Programmierer und Ihrem Wunsch nach sehr langen Zahlen passt.
Referenzen