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

Les colonnes char / varchar / text / longtext dans MySQL occupent-elles la taille complète du système de fichiers, même pour les cellules partiellement remplies?

Consultez http://dev.mysql.com /doc/refman/5.7/en/string-type-overview.html

Fondamentalement, tous ces types sauf le CHAR sont de longueur variable.

Par exemple, si vous avez VARCHAR(72) et vous écrivez abcd dedans, vous y stockerez 5 octets. 4 octets pour chaque caractère, et un préfixe de 1 octet pour stocker la longueur de la chaîne (qui est 4).

Si la longueur de la chaîne est supérieure à 255 caractères, le préfixe VARCHAR sera de 2 octets. Donc un VARCHAR(300) avec une chaîne de 256 caractères stockée dedans prendra 258 octets.

TINYTEXT a toujours un préfixe de 1 octet, car vous ne pouvez y stocker que 255 caractères, donc abcd prendrait 5 octets.

TEXT a un préfixe de 2 octets, donc abcd serait de 6 octets.

LONGTEXT a un préfixe de 4 octets, donc abcd serait de 8 octets.

Enfin, il y a le CHAR presque inutile taper. Un CHAR(72) occupera toujours 72 octets, peu importe ce que vous y stockez. Ce n'est vraiment utile que pour les champs super courts où il y a toujours exactement le même nombre de caractères dans le champ. Comme Y ou N serait un bon CHAR(1) candidat.