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

Comment MySQL interprète-t-il la taille du champ VARCHAR ?

Un VARCHAR(255) peut stocker jusqu'à 255 caractères, quel que soit le nombre d'octets par caractère requis par l'encodage du jeu de caractères.

L'exigence de stockage est la longueur des données réelles stockées (pas le maximum), plus 1 ou 2 octets pour stocker la longueur des données -- 1 octet est utilisé à moins que la longueur maximale possible en octets> 255... donc un VARCHAR(255) COLLATE utf8mb4 utilise 2 octets pour stocker la longueur, tandis qu'un VARCHAR(255) COLLATE ascii_general_ci utilise 1 octet pour stocker la longueur. Chaque colonne ne peut pas stocker plus de 255 caractères.

Déclarez la taille de la colonne en fonction des données stockées. L'utilisation de 255 est courante, mais généralement un drapeau rouge de conception bâclée, car il est rare que cette valeur particulière représente de manière significative la longueur maximale appropriée d'une colonne.

En revanche, un CHAR(255) COLLATE utf8mb4 consomme toujours 255 × 4 (le maximum possible) octets par colonne par ligne, et 0 octet pour stocker la longueur, puisque la longueur stockée ne varie pas. Ces colonnes sont rarement appropriées, sauf lorsque la colonne a toujours une longueur connue et que le jeu de caractères est à un octet, comme un UUID, qui serait CHAR(36) COLLATE ascii_general_ci .

https:/ /dev.mysql.com/doc/refman/5.7/en/storage-requirements.html#data-types-storage-reqs-strings