Vous voyez souvent des champs de base de données définis pour avoir une magnitude de 255 caractères, quelle est la raison traditionnelle / historique pour laquelle? Je suppose que c'est quelque chose à voir avec les limites de pagination / mémoire et les performances, mais la distinction entre 255 et 256 m'a toujours confondu.
varchar(255)
Considérant qu'il s'agit d'une capacité ou d'une ampleur, et non d'un indexeur , pourquoi 255 est-il préférable à 256? Un octet est-il réservé à certaines fins (terminateur ou nul ou autre)?
Vraisemblablement varchar (0) est un non-sens (a une capacité nulle)? Dans quel cas 2 ^ 8 d'espace devrait-il être égal à 256?
Y a-t-il d'autres grandeurs qui offrent des avantages de performance? Par exemple, varchar (512) est-il moins performant que varchar (511) ou varchar (510)?
Cette valeur est-elle la même pour toutes les bases de données de relations, anciennes et nouvelles?
avertissement - Je suis un développeur et non un DBA, j'utilise des tailles et des types de champs qui correspondent à ma logique métier là où cela est connu, mais j'aimerais connaître la raison historique de cette préférence, même si elle n'est plus pertinente (mais même plus si elle est toujours d'actualité).
Éditer:
Merci pour les réponses, il semble y avoir un consensus sur le fait qu'un octet est utilisé pour stocker la taille, mais cela ne règle pas définitivement le problème dans mon esprit.
Si les métadonnées (longueur de chaîne) sont stockées dans la même mémoire / disque contigu, cela a du sens. 1 octet de métadonnées et 255 octets de données de chaîne, conviendraient très bien et s'inséreraient dans 256 octets contigus de stockage, ce qui est vraisemblablement propre et ordonné.
Mais ... Si les métadonnées (longueur de la chaîne) sont stockées séparément des données de chaîne réelles (dans une table maître peut-être), alors contraindre la longueur des données de la chaîne d'un octet, simplement parce qu'il est plus facile de stocker seulement un entier de 1 octet des métadonnées semble un peu étrange.
Dans les deux cas, cela semble être une subtilité qui dépend probablement de l'implémentation DB. La pratique de l'utilisation de 255 semble assez répandue, donc quelqu'un quelque part a dû plaider une bonne cause pour cela au début, est-ce que quelqu'un peut se rappeler ce qu'était / est ce cas? Les programmeurs n'adopteront aucune nouvelle pratique sans raison, et cela a dû être nouveau une fois.