Gibt es einen guten Grund, ich sehe VARCHAR (255) verwendet, so oft (im Gegensatz zu einer anderen Länge gegen)?

StackOverflow https://stackoverflow.com/questions/1217466

Frage

In mehreren Kursen, Büchern und Jobs, Ich habe Textfelder als VARCHAR (255) als eine Art Standard für „shortish“ text definiert gesehen. Gibt es einen guten Grund, dass eine Länge von 255 so oft gewählt wird, anders als sein eine schöne runde Zahl ? Ist es ein Verweigerer aus einiger Zeit in der Vergangenheit, wenn es ein guter Grund war (ob es heute gilt)?

Ich weiß natürlich, dass eine engere Grenze mehr wäre ideal, wenn man irgendwie die maximale Länge der Zeichenfolge kennen. Aber wenn Sie mit VARCHAR (255), die wahrscheinlich bedeutet, dass Sie nicht die maximale Länge nicht kennen, nur dass es sich um ein „shortish“ string ist.


Hinweis: ich diese Frage gefunden ( varchar (255) v TINYBLOB v TINYTEXT ), die besagt, dass VARCHAR ( n ) erfordert n 1 Byte Speicherplatz für n <= 255, n 2 Byte Speicherplatz für n > 255. Ist das der einzige Grund? Das scheint Art von willkürlich, da Sie nur zwei Bytes Einsparung würden im Vergleich zu VARCHAR (256), und man könnte genauso gut noch zwei Bytes speichern, indem es VARCHAR erklärt (253).

War es hilfreich?

Lösung

Historisch gesehen, 255 Zeichen ist oft die maximale Länge eines VARCHAR in einigen DBMSes, und es manchmal windet sich nach wie vor die effektive Maximum sein, wenn Sie UTF-8 verwenden möchten, und haben die Spalte indiziert (wegen der Index Längenbeschränkungen) .

Andere Tipps

255 verwendet, weil es die größte Anzahl von Zeichen ist, die mit einer 8-Bit-Zahl gezählt werden können. Es maximiert die Nutzung der 8-Bit-Zählung, ohne frivol ein anderes ganzes Byte erfordert, um die Zeichen über 255 zu zählen.

Wenn auf diese Weise benutzt, verwendet VarChar nur die Anzahl von Bytes + 1 Ihren Text zu speichern, so dass Sie auch es auf 255 gesetzt könnten, es sei denn, Sie eine harte Grenze wollen (wie 50) auf der Anzahl der Zeichen im Feld .

Wahrscheinlich, weil beide SQL Server und Sybase (nur zwei zu nennen mit mir bekannt), die in einer Spalte VARCHAR ein 255 Zeichen maximal in der Anzahl der Zeichen haben. Für SQL Server, änderte sich dies in der Version 7 in 1996/1997 oder so ... aber alte Gewohnheiten manchmal schwer sterben.

Ich werde die wörtliche Frage beantworten: Nein , gibt es nicht ein guter Grund, Sie sehen VARCHAR (255) verwendet, so oft (es gibt in der Tat Gründe , wie in den anderen Antworten diskutiert, einfach nicht gut ist). Sie werden nicht viele Beispiele für Projekte, die katastrophal, weil der Architekt wählte VARCHAR (300) anstelle von VARCHAR (255) versagt haben. Dies wäre eine Frage der fast völliger Bedeutungslosigkeit sein, auch wenn Sie CHAR statt VARCHAR sprachen.

Wenn Sie sagen, Sie 2^8 256 bekommen, aber die Zahlen in Computer Begriffe beginnt von der Nummer 0. Also, dann Sie die 255 haben, können Sie es in einer Internet-Maske für die IP oder im IP-Sonde selbst.

255 ist der maximale Wert eines 8-Bit-Integer: 11111111 = 255

Ist diese Hilfe?

  

Hinweis: Ich fand diese Frage   (VARCHAR (255) v TINYBLOB TINYTEXT v),   das besagt, dass VARCHAR (n) verlangt   n + 1 Byte Speicher für n <= 255, n + 2   Byte Speicher für n> 255. Ist das   der einzige Grund? Das scheint Art von   da Sie nur willkürlich, wären   Speicher zwei Bytes im Vergleich zu   VARCHAR (256), und man kann nur als   zwei weitere Bytes leicht sparen   erklärt es VARCHAR (253).

Nein. Sie sparen nicht zwei Bytes von 253 deklarieren. Die Umsetzung der VARCHAR ist wahrscheinlich ein Längenzähler und eine variable Länge, nonterminated Array. Das bedeutet, wenn Sie speichern „hallo“ in einem varchar (255) Sie 6 Bytes besetzen. Ein Byte für die Länge (die Zahl 5) und 5 Byte für die fünf Buchstaben

Eine nicht signierte 1-Byte-Anzahl kann den Bereich enthält [0-255] inklusive. Also, wenn Sie 255 zu sehen, ist es vor allem, weil Programmierer denken in der Basis 10 (den Witz?):)

Eigentlich eine Zeit lang, 255 war die größte Größe könnte man einen VARCHAR in MySQL geben, und es gibt Vorteile bei der Verwendung VARCHAR über TEXT mit Indizierung und anderen Fragen.

In vielen Anwendungen wie MsOffice (bis Version 2000 oder 2002), die maximale Anzahl der Zeichen pro Zelle betrug 255 Daten aus Programmen bewegen können von mehr als 255 Zeichen Umgang pro Feld zu / von diesen Anwendungen war ein Alptraum. Derzeit ist die Grenze immer weniger behindern.

Ein weiterer Grund kann sein, dass in sehr alten Datenzugriff Bibliotheken auf Windows wie RDO und ADO (COM-Version nicht ADO.NET) Sie eine spezielle Methode zu nennen haben, GetChunk, um Daten aus einer Spalte zu erhalten mit mehr als 255 Zeichen . Wenn Sie eine Varchar-Spalte auf 255 begrenzt, dieser zusätzlichen Code war nicht erforderlich.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top