Dans le stockage, VARCHAR(255)
est assez intelligent pour stocker uniquement la longueur dont vous avez besoin sur une ligne donnée, à la différence de CHAR(255)
qui serait toujours magasin de 255 caractères.
Mais puisque vous tagged cette question avec MySQL, je vais vous parler d'un spécifique à MySQL astuce: comme les lignes sont copiées à partir du moteur de stockage en couche SQL couche, VARCHAR
champs sont convertis CHAR
de gain de l'avantage de travailler avec une largeur fixe de lignes. Afin que les chaînes dans la mémoire de devenir collier à la longueur maximale de votre déclarée VARCHAR
colonne.
Lorsque votre requête implicitement génère une table temporaire, par exemple, alors que le tri ou GROUP BY
, ce peut utiliser beaucoup de mémoire. Si vous utilisez beaucoup d' VARCHAR(255)
champs pour les données qui n'ont pas besoin d'être long, ce qui peut rendre la table temporaire très grand.
Vous aimerez peut-être aussi de savoir que ce "remplissage" comportement signifie qu'une chaîne déclarée avec le jeu de caractères utf8 plaquettes de trois octets par caractère, même pour les chaînes que vous stockez avec un octet de contenu (par exemple, ascii ou caractères latin1). Et de même utf8mb4 jeu de caractères causes de la chaîne de tampon à quatre octets par caractère dans la mémoire.
Ainsi, un VARCHAR(255)
en utf8 stocker une chaîne courte comme "Pas d'opinion" prend de 11 octets sur le disque (dix bas-jeu de caractères caractères, plus un octet pour la longueur), mais il faut 765 octets en mémoire, et donc dans des tables temporaires ou triés résultats.
J'ai aidé les utilisateurs MySQL qui, sans le savoir créé 1,5 GO de tables temporaires fréquemment et ont rempli leur espace disque. Ils avaient beaucoup d' VARCHAR(255)
colonnes qui, dans la pratique, le stockage des chaînes courtes.
Il est préférable de définir la colonne en fonction du type de données que vous souhaitez stocker. Il a des avantages à faire appliquer les contraintes liées, comme d'autres personnes l'ont mentionné. Mais il a les avantages physiques pour éviter à la mémoire de déchets que j'ai décrit ci-dessus.
Il est difficile de savoir ce que la plus longue à l'adresse postale est, bien sûr, qui est pourquoi beaucoup de gens choisissent un long VARCHAR
qui est certainement plus que n'importe quelle adresse. Et 255 est de coutume, car il est la longueur maximale d'un VARCHAR
dont la longueur peut être codé avec un octet. Il a été également le maximum, VARCHAR
de la longueur de MySQL plus ancienne que la version 5.0.