Frage

Ich sehe VARCHAR (255) die ganze Zeit statt VARCHAR (256) verwendet wird, aber ich sehe auch VARCHAR (16) anstelle von VARCHAR verwendet wurde (15). Dies scheint im Widerspruch zu mir. Wenn ein zusätzliches Byte wird verwendet, um die VARCHAR Länge zu speichern, soll nicht diese Regel auch für die kleineren Längen wie 2, 4, gilt 8-1 sein, 3, 7, statt?

Oder bin ich völlig fehlt etwas?

Mit anderen Worten, wenn ich eine Nummer haben, die ich kenne nie über 12 sein, sollte ich gehen Sie einfach weiter und verwenden Sie einen VARCHAR (15) oder VARCHAR (16) statt? Weil es verwendet die gleiche Menge an Speicherplatz als VARCHAR (12)? Wenn ja, welche verwende ich? 15 oder 16? Ist diese Regel überhaupt, wenn ich näher an 256?

verwende ich sowohl MySQL und SQL, je nach Projekt.

War es hilfreich?

Lösung

  

Mit anderen Worten, wenn ich eine Nummer, die ich kenne nie über 12 sein, soll ich voran gehen gerade und mit einem VARCHAR (15) oder VARCHAR (16) statt?

Nein! Verwendung varchar (12) (oder vielleicht sogar char (12), wenn die Länge ziemlich konstant ist).

Es ist einmal der varchar Typ zu 255 Zeichen auf einigen Systemen begrenzt war ( einschließlich MySql vor 5.0.3 ), da der erste gespeicherte Byte, das die Länge des Feldes angegeben. Aufgrund dieser Einschränkung wollen Devs eine angemessene Menge an Text erlauben, würde 255 wählen, anstatt zusammen zu einem anderen Datentyp gehen.

Aber wenn Sie die Größe Ihrer Daten wissen, auf jeden Fall verwenden, um genau diese Größe für die Datenbank.

Andere Tipps

Es hat nichts mit geraden oder ungeraden Zahlen zu tun.

Historisch gesehen, 255 Zeichen sind oft die maximale Länge eines VARCHAR in verschiedenem DBMSes. Die Längenbegrenzung für ein Feld, das nicht ein LOB (Large Object) war wieder wurde dann 255 Bytes (1 Byte int). So wurde das erste Byte zu speichern, die Länge des Feldes (0-255), und die restlichen n Bytes für die Zeichen verwendet. Deshalb sollten Sie oft VARCHAR(255) sehen.

Wenn das Feld wird nie größer sein als 12, Verwendung VARCHAR(12).

Ich denke, das ursprüngliche Problem ist, dass für einige Systeme VARCHAR (...) auf 255 begrenzt war, denn wenn man ein Byte verwenden, um die tatsächliche Länge zu kodieren, können Sie nur Längen bis zu 255 auszudrücken.

VARCHAR (16) / VARCHAR (15) ist es sehr wahrscheinlich erinnert an diesen Ursprüngen, aber es ist nichts Besonderes in den beiden Werten.

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