Was tun, wenn Sie müssen ganze zahlen größer als 20 stellen auf mysql?
Scheint, wie BIGINT
ist die größte ganze Zahl verfügbar auf MySQL, richtig?
Was zu tun ist, wenn Sie brauchen, um zu speichern eine BIGINT(80) zum Beispiel?
Warum in einigen Fällen, wie irgendwo in den Twitter-API-docs, die Sie uns empfehlen, diese lagern große Ganzzahlen als varchar
?
Was ist der wahre Grund hinter der Wahl, die eine Art über die andere?
- BIGINT ist begrenzt durch die definition 8 bytes.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Große Integer-zahlen sind eigentlich nicht begrenzt auf 20 stellen, Sie zu beschränkt sind die zahlen, die ausgedrückt werden kann in 64 bits (zum Beispiel, die Anzahl
99,999,999,999,999,999,999
ist keine gültige big-integer-trotz 20-stellig).Den Grund für diese Einschränkung ist, dass native-format ganze zahlen können manipuliert werden relativ schnell von der zugrunde liegenden hardware in der Erwägung, dass textuelle Versionen von einer Zahl (tendenziell) müssen verarbeitet werden, um eine Ziffer zu einem Zeitpunkt.
Wenn Sie möchten, eine Nummer größer als die größte 64-bit-Ganzzahl ohne Vorzeichen
18,446,744,073,709,551,615
dann werden Sie brauchen, um es zu speichern alsvarchar
(oder anderen textlichen Bereich) und hoffe, dass Sie nicht brauchen, viel zu tun, mathematische manipulation auf Sie.Alternativ können Sie Einblick in floating-point-zahlen, die haben eine größere Reichweite, aber weniger Präzision, oder dezimal-zahlen, die sollten in der Lage sein, um Ihnen 65 Ziffern für den ganzzahligen Wert, mit
decimal(65,0)
wie der Spaltentyp.ORDER
undWHERE
Aussagen? (Mit richtig abgerechnet Indizes). Zum BeispielSELECT column1 FROM tableA WHERE mybigint > N ORDER BY date LIMIT 100000
. In diesem Fall verwendet, um den Seitenumbruch der Ergebnisse.0000000000...000000042
zum Beispiel). ...Können Sie eine
numeric(65,0)
, aber wenn Sie größer werden, benötigen Sie ein varchar.Den Grund, wählen Sie eine über die andere ist der Verbrauch, Effizienz und Raum. Mit einem int ist effizienter als eine bigint-oder, ich glaube, numerischen Wenn Sie müssen die Mathematik zu tun, auf es.
Können Sie speichern, das große ganze zahlen als eine beliebige Binär-string wenn Sie wollen maximale storage-Effizienz.
Aber ich bin mir nicht sicher, ob es lohnt sich, denn Sie müssen sich mit über 64-bit-Ganzzahlen in Ihrer Anwendung zu, die auch nicht die Sache, die Sie tun möchten ohne einen starken Grund.
Besser, die Dinge einfach halten und verwenden Sie
varchar
.BIGINT ist begrenzt durch die definition zu 8 Ziffern. Die maximale Anzahl der Ziffern in der DECIMAL-Datentyp ist 64. Sie müssen verwenden Sie VARCHAR-Werte speichern größerer Präzision und werden sich bewusst, dass es keine direkte mathematische solcher Werte.