Hay varios lugares donde VARCHAR
y TEXT
difieren o no. Algunas cosas que digo:
- Si la longitud máxima es superior a 512 caracteres , ve con
TEXT
. - Nunca use
TINYTEXT
-- solo tiene negativos relativos aVARCHAR(255)
. - No use
VARCHAR(255)
; elija un máximo razonable en lugar de 255. (Esta es una optimización menor relacionada con la tabla temporal en consultas complejas). - Usar
CHAR
solo para cosas que son verdaderamente de longitud fija. En casi todos estos casos, agregueCHARACTER SET ascii
(o latino1). (De lo contrario, ocupará más espacio del que espera. - Usar
CHARACTER SET ut8mb4
. (Las excepciones son cada vez más raras).
(Lo siento, estoy divagando. Volviendo al tema...)
I indexación, en el diseño de las filas de InnoDB (hay 4 ROW_FORMATs
diferentes ), etc., VARCHAR(513)
será esencialmente indistinguible de TEXT
.
Uno de los pocos argumentos para VARCHAR
es que limita la tienda a la longitud dada. Pero, ¿con qué frecuencia es eso importante?