¿Por qué nvarchar ocupa menos espacio de almacenamiento que decimal en SQL Server?
Una tabla tiene una columna nvarchar(12)
que almacena MSISDNs (solo números de un número de teléfono). El tamaño de la tabla es de 9 Gb.
Después de cambiar el tipo de la columna a decimal(12,0)
, el tamaño de la tabla se convierte en 17 Gb.
¿Cuál es la razón? Pensé que nvarchar(12)
debería ocupar más espacio que decimal(12,0)
?
davy.ai
La razón del incremento en el tamaño de la tabla después de cambiar el tipo de columna de
nvarchar(12)
adecimal(12,0)
podría deberse a los requerimientos de almacenamiento de cada tipo de dato.nvarchar
es un tipo de dato de caracteres de longitud variable que puede almacenar hasta 4.000 caracteres. Requiere 2 bytes de almacenamiento por cada carácter, más 2 bytes adicionales para sobrecarga. Por lo tanto, una columnanvarchar(12)
requeriría al menos 26 bytes de almacenamiento para cada fila en la tabla.Por otro lado,
decimal
es un tipo de dato numérico de longitud fija que requiere 12 bytes de almacenamiento independientemente del valor almacenado en él. Esto significa que una columnadecimal(12,0)
requeriría 12 bytes de almacenamiento para cada fila en la tabla.Por lo tanto, si la tabla tiene un gran número de filas, el aumento en los requerimientos de almacenamiento del tipo de datos
decimal
podría resultar en un incremento general en el tamaño de la tabla. También es importante tener en cuenta que otros factores como la configuración de compresión de datos y las estructuras de índices también pueden afectar el tamaño de la tabla.