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
CHARuniquement pour les choses qui sont vraiment de longueur fixe. Dans presque tous ces cas, ajoutezCHARACTER 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 ?