BIGINT [(M)] [UNSIGNED] [ZEROFILL] Eine große Ganzzahl. Der vorzeichenbehaftete Bereich liegt zwischen -9223372036854775808 und 9223372036854775807. Der vorzeichenlose Bereich liegt zwischen 0 und 18446744073709551615.
SERIAL ist ein Alias für BIGINT UNSIGNED NOT NULL AUTO_INCREMENT UNIQUE.
Einige Dinge, die Sie in Bezug auf BIGINT-Spalten beachten sollten:
■ Alle Arithmetik wird mit vorzeichenbehafteten BIGINT- oder DOUBLE-Werten ausgeführt. Verwenden Sie daher keine vorzeichenlosen großen Ganzzahlen größer als 9223372036854775807 (63 Bit), außer mit Bitfunktionen! Wenn Sie dies tun, können einige der letzten Ziffern im Ergebnis aufgrund von Rundungsfehlern beim Konvertieren eines BIGINT-Werts in ein DOUBLE falsch sein.
MySQL kann BIGINT in folgenden Fällen verarbeiten:
◦ Wenn Sie Ganzzahlen verwenden, um große vorzeichenlose Werte in einer BIGINT-Spalte zu speichern.
◦ In MIN (col_name) oder MAX (col_name), wobei col_name auf eine BIGINT-Spalte verweist.
◦ Bei Verwendung von Operatoren (+, -, * usw.), bei denen beide Operanden Ganzzahlen sind.
■ Sie können jederzeit einen genauen ganzzahligen Wert in einer BIGINT-Spalte speichern, indem Sie ihn mit einer Zeichenfolge speichern. In diesem Fall führt MySQL eine Konvertierung von Zeichenfolgen in Zahlen durch, bei der keine Darstellung mit doppelter Genauigkeit erforderlich ist.
■ Die Operatoren -, + und * verwenden die BIGINT-Arithmetik, wenn beide Operanden ganzzahlige Werte sind. Dies bedeutet, dass Sie beim Multiplizieren von zwei großen Ganzzahlen (oder Ergebnissen von Funktionen, die Ganzzahlen zurückgeben) unerwartete Ergebnisse erhalten können, wenn das Ergebnis größer als 9223372036854775807 ist.
Wie Sie sagten, würde ich mich für BIGINT entscheiden, solange Sie keine Arithmetik, Sortierung oder Verwendung von Vergleichsoperatoren für die Werte durchführen.
In der soeben erwähnten Dokumentation wird die Nummer als Zeichenfolge gespeichert, um Zwischenschritte zu umgehen, die durch Darstellung mit doppelter Genauigkeit ausgeführt werden.