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
CHARsolo 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?