Diferencia entre VARCHAR y CHAR en MySQL
Este tutorial presentará las diferencias entre varchar
y char
en MySQL.
Algunos de los puntos clave para cada uno son los siguientes.
CHAR
CHAR
es un tipo de datos de espacio fijo que admite cadenas.- Los espacios vacíos o restantes en el texto o la cadena se sustituyen por espacios en blanco o espacios.
CHAR
toma un tamaño de un byte por cada carácter en la cadena o texto de entrada.- Por lo tanto, podemos decir que si definimos
CHAR(100)
, tendrá un tamaño de 100 bits sin importar la longitud de la cadena o el número de caracteres.
VARCHAR(M)
VARCHAR
tiene un tamaño editable con un máximo de 65535 caracteres. El usuario tendría que especificar una longitud entre 1 y 65535 caracteres.- Además,
VARCHAR
ocupax + 1
byte de espacio en el disco donde el número total de caracteres es menor o igual a 255. Y ocupax + 2
bytes de espacio en el disco donde el número total de caracteres es mayor o igual a 256 caracteres y menor que igual a 65535 caracteres. - Por último,
VARCHAR
puede formar parte de un índice.
Por lo tanto, podemos resumir las diferencias clave: varchar
no tiene una longitud fija, mientras que char
tiene una longitud fija o un tamaño fijo.
En la práctica, podemos suponer que usar varchar
es mejor que usar el tipo de datos char
. La razón detrás de esta suposición es que se puede ahorrar mucho espacio con el tipo de datos varchar
.
Veamos un ejemplo para darnos cuenta de la ventaja de varchar
.
Digamos que definimos un char
como char(25)
y almacenamos el valor de la cadena como Preet
. Por otro lado, definamos otra columna con tipo de datos como varchar
con un valor de cadena como Preet
.
Aunque estas columnas con diferentes tipos de datos tienen el valor Preet
, varchar
solo consumirá 5 bits, mientras que char
consumirá los 25 tamaños de bits predefinidos. El resto del espacio vacío se rellena con espacios en blanco char
.
Esta ventaja de varchar
puede ser enorme en entornos de producción donde el almacenamiento es un gran problema. Además, si estamos usando varchar
, no tenemos que preocuparnos de que el tamaño de nuestra cadena supere un valor de bit predefinido.