sql >> Base de Datos >  >> RDS >> Sqlserver

numeric(38,0) como columna de clave principal; bueno, malo, ¿a quién le importa?

Bueno, tú eres gastar más datos para almacenar números que realmente nunca alcanzará.

bigint sube a 9,223,372,036,854,775,807 en 8 Bytes

int sube a 2,147,483,647 en 4 bytes

A NUMERIC(38,0) va a tomar, si estoy haciendo bien los cálculos, 17 bytes.

No es una gran diferencia, pero:tipos de datos más pequeños =más filas en la memoria (o menos páginas para el mismo número de filas) =​​menos E/S de disco para realizar búsquedas (ya sea indexadas o búsquedas de páginas de datos). Lo mismo ocurre con la replicación, las páginas de registro, etc.

Para SQL Server:INT es un estándar IEEE y, por lo tanto, es más fácil de comparar para la CPU, por lo que obtiene un ligero aumento en el rendimiento al usar INT frente a NUMERIC (que es un formato decimal empaquetado). (Tenga en cuenta que en Oracle, si la versión actual coincide con las versiones anteriores con las que crecí, TODOS los tipos de datos están empaquetados, por lo que un INT interno es prácticamente lo mismo que un NUMERIC (x,0), por lo que no hay diferencia de rendimiento)

Entonces, en el gran esquema de las cosas, si tiene mucho disco, RAM y E / S de repuesto, use el tipo de datos que desee. Si desea obtener un poco más de rendimiento, sea un poco más conservador.

De lo contrario, en este punto, lo dejaría como está. No hay necesidad de cambiar las cosas.