Pourquoi, historiquement, les gens utilisent 255 pas 256 pour le champ de base de données des grandeurs?

Vous voyez souvent les champs de base de données afin d'obtenir une magnitude de 255 caractères, ce qui est la traditionnelle /historique en est la raison? Je suppose que c'est quelque chose à voir avec la pagination /les limites de la mémoire et de performances, mais la distinction entre 255 et 256 a toujours confondu moi.

varchar(255)

Considérant que c'est une capacité ou de l'ampleur, pas un indexeur, pourquoi est-255 préféré plus de 256? Est un octet réservé pour un certain but (terminator ou null ou quelque chose)?

Sans doute varchar(0) est un non-sens (a zéro de la capacité)? Auquel cas 2^8 de l'espace doit être de 256 sûrement?

Existe-il d'autres grandeurs que de fournir des avantages de performance? Par exemple est de type varchar(512) moins performantes que les varchar(511) ou varchar(510)?

La valeur est la même pour toutes les relations de bases de données, l'ancien et le nouveau?

avertissement - je suis un développeur pas un DBA, j'ai utiliser le champ de tailles et de types de fonction de mon activité logique où c'est connu, mais je voudrais savoir la historique raison de cette préférence, même si elle n'est plus pertinente (mais encore plus si c'est toujours d'actualité).

Edit:

Merci pour les réponses, il semble y avoir un consensus qu'un octet est utilisé pour stocker la taille, mais cela ne veut pas régler la question définitivement dans mon esprit.

Si les méta-données (longueur de la chaîne) est stocké dans le même contiguë de la mémoire/du disque, c'est un peu logique. 1 octet de métadonnées et de 255 octets de données de chaîne, qui irait très bien, et s'adaptent à 256 octets contigus de stockage, qui sans doute est propre et bien rangé.

Mais...Si les métadonnées (longueur de la chaîne) est stockée séparément à partir de la chaîne de données (dans un tableau de maître, peut-être), puis pour limiter la longueur de la chaîne de données par un seul octet, juste parce que c'est plus facile à stocker que 1 octet entier de métadonnées semble un peu bizarre.

Dans les deux cas, il semble y avoir une subtilité qui dépend probablement sur la DB de mise en œuvre. La pratique de l'aide 255 semble assez répandue, de sorte que quelqu'un quelque part doit avoir fait valoir une bonne affaire pour elle au début, quelqu'un peut-il rappeler que cette affaire a été/est? Les programmeurs de ne pas adopter de nouvelles pratiques sans raison, et cela doit avoir été une nouvelles fois.

  • Parce que le nombre de caractères commence à partir de 0 à N-1. Afin de 256 caractères sera déclarée de type varchar(255). Si je ne me trompe.
  • Peut-être parce qu'IL les gens commencent à compter à 0, pas 1 😉 ?
  • Je pense que cela a à faire avec l'ancienne école des programmeurs, ne peut pas même se rappeler pourquoi nous l'avons fait.
  • Gentleman: nope le nombre entre parenthèses est la véritable longueur... Comme C la matrice de déclarations: - x[256] donne x[0]...x[255].
  • mais considérons un tableau qui peut contenir 1 point. Vous déclarez quelque chose[1] et y accéder à quelque chose[0]. La question est de savoir pourquoi dans SQL ne nous déclarer la capacité à 1 octet de moins que semble logique à première vue.
  • Double Possible de Est-il une bonne raison, je vois VARCHAR(255) utilisé si souvent (en opposition à une autre longueur)?

InformationsquelleAutor Andrew M | 2010-02-26