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

Quel est l'impact de la modification de la longueur d'un varchar dans mysql ?

La longueur d'une colonne varchar est fixée à la longueur que vous déclarez lorsque vous créez la table. La longueur peut être n'importe quelle valeur comprise entre 0 et 255 (avant MySQL 5.0.3) et entre 0 et 65 535 (dans MySQL 5.0.3 et versions ultérieures).

Le stockage du varchar est les octets de données avec l'ajout d'un ou deux octets pour déclarer la longueur de la chaîne. Si la longueur maximale est de 255 ou moins, alors seulement 1 octet de longueur sera ajouté.

Si vous utilisez alter table et modifiez la longueur maximale, aucune taille de stockage de données ne sera affectée si la longueur maximale définie est inférieure à 255. Si vous augmentez la longueur maximale au-dessus de 255, c'est au moteur de stockage s'il force deux octets ou pas pour les valeurs inférieures à 255, dans ce cas, il augmentera de 1 octet pour chaque ligne.

Le type char est différent de varchar car char utilise toujours l'espace requis, donc si vous aviez char(10) et varchar(10) mais que vous ne stockiez que "bonjour" dans chacun, char utiliserait les 10 octets, vharchar contiendrait 6 octets ( 5 pour bonjour et 1 pour la longueur), donc changer la taille des colonnes varchar n'allouera pas plus d'espace de stockage comme il le ferait s'il s'agissait d'un type char.

La vraie question est maintenant de savoir pourquoi voudriez-vous que PHP manipule la taille du varchar ? Vous devez spécifier la taille pour une raison, si vous voulez un champ de longueur variable pouvant contenir beaucoup de texte (plus de 65 535 octets) et également dynamique afin qu'il n'utilise que l'espace minimum requis, peut-être que les types TEXT pourraient être meilleurs pour votre situation ?