En varios cursos, libros y trabajos, he visto campos de texto definidos como VARCHAR (255) como el tipo predeterminado para el texto "corto". ¿Hay alguna buena razón para elegir una longitud de 255 con tanta frecuencia, aparte de ser un buen número redondo ? ¿Es un retraso de algún tiempo en el pasado cuando había una buena razón (si se aplica hoy o no)?
Me doy cuenta, por supuesto, que un límite más estricto sería más ideal, si de alguna manera conoces la longitud máxima de la cuerda. Pero si está utilizando VARCHAR (255), eso probablemente indica que no conoce la longitud máxima, solo que es una cadena "corta".
Nota: Encontré esta pregunta ( varchar (255) v tinyblob v tinytext ), que dice que VARCHAR ( n ) requiere n +1 bytes de almacenamiento para n <= 255, n +2 bytes de almacenamiento para n > 255. ¿Es esta la única razón? Eso parece algo arbitrario, ya que solo estaría ahorrando dos bytes en comparación con VARCHAR (256), y podría guardar fácilmente otros dos bytes declarándolo VARCHAR (253).
fuente
255 se utiliza porque es el mayor número de caracteres que se pueden contar con un número de 8 bits. Maximiza el uso del recuento de 8 bits, sin requerir frívolamente otro byte completo para contar los caracteres superiores a 255.
Cuando se usa de esta manera, VarChar solo usa el número de bytes + 1 para almacenar su texto, por lo que podría configurarlo en 255, a menos que desee un límite estricto (como 50) en el número de caracteres en el campo.
fuente
utf8
,varchar(85)
es el límite sobre el cual el cruce inclina el byte de longitud de uno a dos bytes. Si esutf8mb4
, esvarchar(63)
. Estos son significativos porque son el máximo al que se puede extender la longitud de un VARCHAR mediante el uso de la TABLA DE ALTERACIÓN en línea . En consecuencia, deduje esos números creando una tabla con unavarchar(2) charset utf8
columna y viendo hasta qué punto pude extenderlo dadoALGORITHM=INPLACE
.Probablemente porque SQL Server y Sybase (por nombrar dos con los que estoy familiarizado) solían tener un máximo de 255 caracteres en la cantidad de caracteres en una
VARCHAR
columna. Para SQL Server, esto cambió en la versión 7 en 1996/1997 más o menos ... pero los viejos hábitos a veces mueren con dificultad.fuente
Voy a responder la pregunta literal: no , no hay una buena razón por la que veas que VARCHAR (255) se usa con tanta frecuencia (de hecho , hay razones , como se discutió en las otras respuestas, simplemente no son buenas). No encontrará muchos ejemplos de proyectos que hayan fallado catastróficamente porque el arquitecto eligió VARCHAR (300) en lugar de VARCHAR (255). Este sería un problema de insignificancia casi total, incluso si estuviera hablando de CHAR en lugar de VARCHAR.
fuente
Cuando dices
2^8
que obtienes256
, pero los números en términos de computadoras comienzan desde el número0
. Entonces, tienes el255
, puedes probarlo en una máscara de Internet para la IP o en la propia IP.255
es el valor máximo de un entero de 8 bits:11111111 = 255
¿Eso ayuda?
fuente
No. no guarda dos bytes declarando 253. La implementación de varchar es muy probablemente un contador de longitud y una matriz de longitud variable y no terminada. Esto significa que si almacena "hola" en un varchar (255) ocupará 6 bytes: un byte para la longitud (el número 5) y 5 bytes para las cinco letras.
fuente
VARCHAR
esa manera anula el punto de usar enVARCHAR
lugar deCHAR
.Un número de 1 byte sin signo puede contener el rango [0-255] inclusive. Entonces, cuando ves 255, es principalmente porque los programadores piensan en la base
10
(¿entiendes el chiste?) :)En realidad, por un tiempo, 255 fue el tamaño más grande que podría darle a un VARCHAR en MySQL, y hay ventajas al usar VARCHAR sobre TEXT con indexación y otros problemas.
fuente
En muchas aplicaciones, como MsOffice (hasta la versión 2000 o 2002), el número máximo de caracteres por celda era 255. Mover datos de programas capaces de manejar más de 255 caracteres por campo hacia / desde esas aplicaciones fue una pesadilla. Actualmente, el límite es cada vez menos difícil.
fuente
0000 0000 -> este es un número binario de 8 bits. Un dígito representa un bit.
Usted cuenta así:
0000 0000 → (0)
0000 0001 → (1)
0000 0010 → (2)
0000 0011 → (3)
Cada bit puede ser uno de dos valores: activado o desactivado. El número total más alto se puede representar por multiplicación:
O
Restamos uno porque el primer número es 0.
255 puede contener bastante (sin juego de palabras) de valores.
A medida que usamos más bits, el valor máximo aumenta exponencialmente. Por lo tanto, para muchos propósitos, agregar más bits es excesivo.
fuente
Otra razón puede ser que en bibliotecas de acceso a datos muy antiguas en Windows como RDO y ADO (versión COM no ADO.NET) tenía que llamar a un método especial, GetChunk, para obtener datos de una columna con más de 255 caracteres. Si limitó una columna varchar a 255, este código adicional no era necesario.
fuente