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