Ich habe eine Anwendung, die eine PostgreSQL-Tabelle verwendet. Die Tabelle ist sehr groß (Milliarden von Zeilen) und hat eine Spalte, die eine ganze Zahl ist.
Das integer
können bis zu 6 Ziffern sein, dh 0-999.999, keine Negative.
Ich dachte darüber nach, es zu ändern numeric(6,0)
.
Wäre das eine gute Idee? Würde numeric(6,0)
weniger Bytes dauern? Wie wäre es mit der Leistung (diese Tabelle wird viel abgefragt)?
postgresql
Ofiris
quelle
quelle
numeric
Spalte inint
?Die endgültige Antwort lautet Nein zu allen Ihren Fragen. Ganzzahl ist immer der richtige Weg für alles, wofür Sie es verwenden können. (Geld zum Beispiel)
Denken Sie eine Minute darüber nach. Wenn das Datenbankmodul auf eine Ganzzahl stößt, wird diese sehr effizient verarbeitet, da nicht viel interpretiert wird. Es ist eine ganze Zahl. Der numerische Typ verhält sich eher wie eine Zeichenfolge. Der Motor muss zuerst herausfinden, welche Teile vor und nach dem Dezimalpunkt liegen, und sie entsprechend massieren, um numerische Operationen auszuführen.
Die Verwendung einer Ganzzahl ist immer effizienter als eine numerische Zahl, obwohl numerische Typen für Menschen häufig bequemer sind.
quelle
NUMERIC
. Eine skalierte Ganzzahl ist jedoch viel besser als die Verwendung eines Gleitkommawerts für das Geld.