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

Varchar o tipos de datos de texto para cadenas de longitud de hasta unos pocos miles de caracteres

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 a VARCHAR(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, agregue CHARACTER 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?