Question

Je vois que VARCHAR (255) est utilisé tout le temps à la place de VARCHAR (256), mais je vois aussi que VARCHAR (16) est utilisé à la place de VARCHAR (15). Cela me semble incohérent. Si un octet supplémentaire est utilisé pour stocker la longueur du VARCHAR, cette règle ne devrait-elle pas s'appliquer également aux plus petites longueurs telles que 2, 4, 8, soit plutôt 1, 3, 7?

Ou est-ce que je manque totalement quelque chose?

En d’autres termes, si j’ai un nombre qui, à ma connaissance, ne sera jamais supérieur à 12, devrais-je simplement continuer et utiliser plutôt VARCHAR (15) ou VARCHAR (16)? Parce qu'il utilise la même quantité d'espace qu'un VARCHAR (12)? Si oui, lequel dois-je utiliser? 15 ou 16 ans? Cette règle change-t-elle quand je me rapproche de 256?

J'utilise MySQL et SQL, selon le projet.

Était-ce utile?

La solution

  

En d’autres termes, si j’ai un nombre qui, à ma connaissance, ne sera jamais supérieur à 12, devrais-je simplement continuer et utiliser plutôt VARCHAR (15) ou VARCHAR (16)?

Non! Utilisez varchar (12) (ou peut-être même char (12) si la longueur est assez constante).

Il était une fois le type varchar limité à 255 caractères sur certains systèmes ( y compris MySQL antérieur à la version 5.0.3 ) car le premier octet stocké indiquait la longueur du champ. Compte tenu de cette restriction, les développeurs souhaitant autoriser une quantité raisonnable de texte choisiraient 255 plutôt que de passer à un type de données différent.

Mais si vous connaissez la taille de vos données, utilisez-la exactement pour cette base de données.

Autres conseils

Cela n'a rien à voir avec les nombres pairs ou impairs.

Historiquement, la longueur maximale d’un VARCHAR dans divers SGBD est généralement de 255 caractères. La limite de longueur pour un champ qui n'était pas un LOB (gros objet) à l'époque était de 255 octets (int de 1 octet). Le premier octet a donc été utilisé pour stocker la longueur du champ (0-255) et les octets n restants pour les caractères. C’est pourquoi vous voyez souvent VARCHAR (255) .

Si le champ ne sera jamais supérieur à 12, utilisez VARCHAR (12) .

Je pense que le problème initial est que, sur certains systèmes, VARCHAR (...) était limité à 255, car lorsque vous utilisez un octet pour coder la longueur réelle, vous ne pouvez exprimer que des longueurs allant jusqu'à 255.

VARCHAR (16) / VARCHAR (15) rappelle probablement ces origines, mais il n'y a rien de spécial dans les deux valeurs.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top