it-swarm.com.de

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

In mehreren Kursen, Büchern und Jobs habe ich Textfelder, die als VARCHAR (255) definiert sind, als eine Art Standard für "kürzeren" Text gesehen. Gibt es einen guten Grund, warum so oft eine Länge von 255 gewählt wird, außer eine nette runde Zahl ? Ist es ein Holdout aus einer Zeit, in der es einen guten Grund gab (ob es heute zutrifft oder nicht)?

Mir ist natürlich klar, dass eine engere Grenze idealer wäre, wenn man irgendwie die maximale Länge der Saite kennt. Wenn Sie jedoch VARCHAR (255) verwenden, bedeutet dies wahrscheinlich, dass Sie die maximale Länge nicht kennen, sondern nur, dass es sich um eine "kürzere" Zeichenfolge handelt.


Hinweis: Ich habe diese Frage gefunden ( varchar (255) v tinyblob v tinytext ), die besagt, dass VARCHAR ( n ) benötigt n + 1 Byte Speicher für n <= 255, n + 2 Bytes Speicher für n > 255. Ist das der einzige Grund? Das scheint willkürlich, da Sie im Vergleich zu VARCHAR (256) nur zwei Bytes sparen würden, und Sie könnten genauso gut zwei weitere Bytes sparen, indem Sie es als VARCHAR (253) deklarieren.

130
Kip

In der Vergangenheit waren 255 Zeichen in einigen DBMS häufig die maximale Länge eines VARCHAR, und es wird manchmal immer noch das effektive Maximum angezeigt, wenn Sie UTF-8 verwenden und die Spalte indiziert haben möchten (aufgrund der Indexlänge) Einschränkungen).

84
chaos

255 wird verwendet, da dies die größte Anzahl von Zeichen ist, die mit einer 8-Bit-Zahl gezählt werden können. Dies maximiert die Verwendung der 8-Bit-Anzahl, ohne dass leichtfertig ein weiteres ganzes Byte erforderlich ist, um die Zeichen über 255 zu zählen.

Auf diese Weise verwendet VarChar nur die Anzahl der Bytes + 1, um Ihren Text zu speichern. Daher können Sie sie auch auf 255 setzen, es sei denn, Sie möchten eine feste Begrenzung (wie 50) für die Anzahl der Zeichen im Feld.

143
Robert Harvey

Wahrscheinlich, weil sowohl SQL Server als auch Sybase (um nur zwei zu nennen, mit denen ich vertraut bin) in einer VARCHAR -Spalte maximal 255 Zeichen enthielten. Für SQL Server änderte sich dies in Version 7 in den Jahren 1996/1997 oder so, aber alte Gewohnheiten sterben manchmal schwer.

19
Charles Bretana

Ich werde die wörtliche Frage beantworten: nein, es gibt keinen guten Grund, warum VARCHAR (255) so oft verwendet wird (es gibt in der Tat Gründe , wie in den anderen Antworten besprochen, nur keine guten). Sie werden nicht viele Beispiele für Projekte finden, die katastrophal gescheitert sind, weil der Architekt VARCHAR (300) anstelle von VARCHAR (255) gewählt hat. Dies wäre ein nahezu unbedeutendes Problem, selbst wenn Sie von CHAR anstelle von VARCHAR sprechen würden.

15
MusiGenesis

Wenn du sagst 2^8 du erhältst 256, aber die Zahlen in Computern beginnen mit der Zahl 0. Also, dann hast du das 255, Sie können es in einer Internetmaske für die IP oder in der IP selbst prüfen.

255 ist der Maximalwert einer 8-Bit-Ganzzahl: 11111111 = 255

Hilft das?

11
exec.-

Hinweis: Ich habe diese Frage gefunden (varchar (255) v tinyblob v tinytext), die besagt, dass VARCHAR (n) n + 1 Byte Speicherplatz für n <= 255, n + 2 Byte Speicherplatz für n> 255 benötigt. Ist das der einzige Grund? Das scheint willkürlich, da Sie im Vergleich zu VARCHAR (256) nur zwei Bytes sparen würden und Sie genauso gut zwei weitere Bytes sparen könnten, indem Sie es als VARCHAR (253) deklarieren.

Nein, Sie sparen keine zwei Bytes, indem Sie 253 deklarieren. Die Implementierung des varchar ist höchstwahrscheinlich ein Längenzähler und ein nicht abgeschlossenes Array variabler Länge. Dies bedeutet, dass Sie, wenn Sie "Hallo" in einem varchar (255) speichern, 6 Bytes belegen: ein Byte für die Länge (die Nummer 5) und 5 Bytes für die fünf Buchstaben.

7
Stefano Borini

Eine vorzeichenlose 1-Byte-Zahl kann den Bereich [0-255] enthalten. Wenn Sie also 255 sehen, liegt das hauptsächlich daran, dass Programmierer in base 10 Denken (verstehen Sie den Witz?) :)

Tatsächlich war 255 für eine Weile die größte Größe, die Sie einem VARCHAR in MySQL geben konnten, und die Verwendung von VARCHAR gegenüber TEXT bei der Indizierung und anderen Problemen bietet Vorteile.

3
gahooa

In vielen Anwendungen wie MsOffice (bis Version 2000 oder 2002) lag die maximale Anzahl von Zeichen pro Zelle bei 255. Das Verschieben von Daten von Programmen, die mehr als 255 Zeichen pro Feld verarbeiten können, zu/von diesen Anwendungen war ein Albtraum. Derzeit ist das Limit immer weniger hinderlich.

3
Joaquin Montes

Ein weiterer Grund kann sein, dass Sie in sehr alten Datenzugriffsbibliotheken unter Windows wie RDO und ADO (COM-Version nicht ADO.NET)) eine spezielle Methode GetChunk aufrufen mussten, um Daten von einem abzurufen Spalte mit mehr als 255 Zeichen Wenn Sie eine varchar-Spalte auf 255 Zeichen beschränkt haben, war dieser zusätzliche Code nicht erforderlich.

0
Booji Boy