VARCHAR
se almacena en línea con la tabla. VARCHAR
es más rápido cuando el tamaño es razonable, cuya compensación sería más rápida depende de sus datos y su hardware, le gustaría comparar un escenario del mundo real con sus datos.
El número máximo efectivo de bytes que se pueden almacenar en un VARCHAR
o VARBINARY
la columna está sujeta al tamaño máximo de fila de 65,535 bytes
, que se comparte entre todas las columnas.
Por ejemplo, un VARCHAR(255)
La columna puede contener una cadena con una longitud máxima de 255 caracteres. Suponiendo que la columna usa el conjunto de caracteres latin1 (un byte por carácter), el almacenamiento real requerido es la longitud de la cadena (L), más un byte para registrar la longitud de la cadena. Para la cadena 'abcd'
, L
es 4
y el requisito de almacenamiento es de cinco bytes. Si se declara la misma columna para usar ucs2
conjunto de caracteres de doble byte, el requisito de almacenamiento es de 10 bytes:la longitud de 'abcd' es de ocho bytes y la columna requiere dos bytes para almacenar longitudes porque la longitud máxima es superior a 255 (hasta 510 bytes
).
Para datos más grandes, considere usar TEXT
o BLOB
. TEXT
y BLOB
las columnas se implementan de manera diferente en el NDB
motor de almacenamiento, en el que cada fila en un TEXT
columna se compone de dos partes separadas. Uno de estos es de tamaño fijo (256 bytes)
, y en realidad se almacena en la tabla original. El otro consta de cualquier dato que supere los 256 bytes
, que se almacena en una tabla oculta. Las filas de esta segunda tabla son siempre 2,000 bytes
largo. Esto significa que el tamaño de un TEXT
la columna es 256
si size <= 256
(donde tamaño representa el tamaño de la fila); de lo contrario, el tamaño es 256 + size + (2000 – (size – 256) % 2000)
.
http://dev.mysql.com/doc/refman /5.6/en/storage-requirements.html
Depende de la relación de su base de datos, si rara vez usa esos campos en la consulta. Por ejemplo para información adicional. Crear una tabla separada es una buena opción (normalizar).
VARCHAR
es diferente con CHAR
. Si crea VARCHAR(250)
e inserte solo 20
caracteres en él, entonces tomará 5 bytes
+ L
diferente con CHAR(250)
, tomará 250 bytes
+ L
para la misma condición.