En VARCHAR(255)
kan gemme op til 255 tegn, uanset antallet af bytes pr. tegn, der kræves af tegnsætkodningen.
Lagringskravet er længden af de faktisk lagrede data (ikke maksimum), plus 1 eller 2 bytes til at gemme længden af dataene -- 1 byte bruges, medmindre den maksimalt mulige længde i bytes> 255... så en VARCHAR(255) COLLATE utf8mb4
bruger 2 bytes til at gemme længden, mens en VARCHAR(255) COLLATE ascii_general_ci
bruger 1 byte til at gemme længden. Hver kolonne kan ikke gemme mere end 255 tegn.
Angiv kolonnestørrelsen som passende for de data, der lagres. Brug af 255 er almindeligt, men normalt et rødt flag med sjusket design, da det er sjældent, at denne særlige værdi på en meningsfuld måde repræsenterer den maksimale passende længde af en kolonne.
Derimod en CHAR(255) COLLATE utf8mb4
bruger altid 255 × 4 (det maksimalt mulige) bytes pr. kolonne pr. række og 0 bytes for at gemme længden, da den lagrede længde ikke varierer. Disse kolonner er sjældent passende, undtagen når kolonnen altid har en kendt længde, og tegnsættet er single-byte, såsom en UUID, som ville være CHAR(36) COLLATE ascii_general_ci
.
https:/ /dev.mysql.com/doc/refman/5.7/en/storage-requirements.html#data-types-storage-reqs-strings