Tengo una aplicación que usa una tabla PostgreSQL. La tabla es muy grande (miles de millones de filas) y tiene una columna que es un número entero.
El integer
puede tener hasta 6 dígitos, es decir, 0-999,999, sin negativos.
Pensé en cambiarlo para que sea numeric(6,0)
.
¿Sería una buena idea? ¿ numeric(6,0)
Tomaría menos bytes? ¿Qué tal el rendimiento (esta tabla se consulta mucho)?
postgresql
Ofiris
fuente
fuente
numeric
columnaint
?La respuesta definitiva es no a todas sus preguntas. Integer es siempre el camino a seguir para cualquier cosa que pueda usar. (Dinero, por ejemplo)
Piénsalo por un minuto. Cuando el motor de la base de datos encuentra un número entero, lo maneja de manera muy eficiente porque no tiene mucha interpretación. Es un numero entero. El tipo numérico se comporta más como una cadena. El motor primero tiene que averiguar qué partes están antes y después del punto decimal, y masajearlas adecuadamente para realizar operaciones numéricas.
Usar un número entero siempre será más eficiente que un numérico, aunque los tipos numéricos a menudo son más convenientes para los humanos.
fuente
NUMERIC
. Sin embargo, un número entero escalado es mucho mejor que usar un valor de punto flotante por dinero.