Mysql
 sql >> Base de données >  >> RDS >> Mysql

Types de données Varchar ou texte pour les chaînes d'une longueur allant jusqu'à quelques milliers de caractères

Il existe différents endroits où VARCHAR et TEXT diffèrent ou ne diffèrent pas. Certaines choses que je dis :

  • Si la longueur maximale est supérieure à 512 caractères , allez avec TEXT .
  • N'utilisez jamais TINYTEXT -- il n'a que des négatifs par rapport à VARCHAR(255) .
  • N'utilisez pas VARCHAR(255); choisissez un maximum raisonnable au lieu de 255. (Il s'agit d'une optimisation mineure relative à la table temporaire dans les requêtes complexes.)
  • Utilisez CHAR uniquement pour les choses qui sont vraiment de longueur fixe. Dans presque tous ces cas, ajoutez CHARACTER SET ascii (ou latin1). (Sinon, cela prendra plus d'espace que prévu.
  • Utilisez CHARACTER SET ut8mb4 . (Les exceptions sont de plus en plus rares.)

(Désolé, je m'égare. Retour sur le sujet...)

I indexation, dans la disposition des lignes InnoDB (il y a 4 ROW_FORMATs différents ), etc, VARCHAR(513) sera essentiellement indiscernable de TEXT .

L'un des rares arguments pour VARCHAR est qu'il limite le magasin à la longueur donnée. Mais à quelle fréquence est-ce important ?