sql >> Base de Datos >  >> RDS >> Mysql

¿Cómo interpreta MySQL el tamaño del campo VARCHAR?

Un VARCHAR(255) puede almacenar hasta 255 caracteres, independientemente del número de bytes por carácter requerido por la codificación del conjunto de caracteres.

El requisito de almacenamiento es la longitud de los datos reales almacenados (no el máximo), más 1 o 2 bytes para almacenar la longitud de los datos; se usa 1 byte a menos que la longitud máxima posible en bytes> 255... entonces un VARCHAR(255) COLLATE utf8mb4 utiliza 2 bytes para almacenar la longitud, mientras que VARCHAR(255) COLLATE ascii_general_ci utiliza 1 byte para almacenar la longitud. Cualquiera de las columnas no puede almacenar más de 255 caracteres.

Declare el tamaño de la columna según corresponda para los datos que se almacenan. El uso de 255 es común, pero suele ser una señal de alerta de un diseño descuidado, ya que es raro que este valor en particular represente de manera significativa la longitud máxima adecuada de una columna.

Por el contrario, un CHAR(255) COLLATE utf8mb4 siempre consume 255 × 4 (el máximo posible) bytes por columna por fila, y 0 bytes para almacenar la longitud, ya que la longitud almacenada no varía. Estas columnas rara vez son apropiadas, excepto cuando la columna siempre tiene una longitud conocida y el conjunto de caracteres es de un solo byte, como un UUID, que sería CHAR(36) COLLATE ascii_general_ci .

https:/ /dev.mysql.com/doc/refman/5.7/en/storage-requirements.html#data-types-storage-reqs-strings