Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Wie interpretiert MySQL die VARCHAR-Feldgröße?

Ein VARCHAR(255) kann bis zu 255 Zeichen speichern, unabhängig von der Anzahl der Bytes pro Zeichen, die für die Zeichensatzcodierung erforderlich sind.

Die Speicheranforderung ist die Länge der tatsächlich gespeicherten Daten (nicht das Maximum) plus 1 oder 2 Bytes zum Speichern der Datenlänge – 1 Byte wird verwendet, es sei denn, die maximal mögliche Länge in Bytes> 255 ... also a VARCHAR(255) COLLATE utf8mb4 verwendet 2 Bytes, um die Länge zu speichern, während ein VARCHAR(255) COLLATE ascii_general_ci verwendet 1 Byte, um die Länge zu speichern. Jede Spalte kann nicht mehr als 255 Zeichen speichern.

Deklarieren Sie die Spaltengröße entsprechend den zu speichernden Daten. Die Verwendung von 255 ist üblich, aber normalerweise ein Warnsignal für schlampiges Design, da es selten vorkommt, dass dieser bestimmte Wert die maximal angemessene Länge einer Spalte sinnvoll darstellt.

Im Gegensatz dazu ein CHAR(255) COLLATE utf8mb4 verbraucht immer 255 × 4 (das maximal mögliche) Byte pro Spalte pro Zeile und 0 Byte zum Speichern der Länge, da die gespeicherte Länge nicht variiert. Diese Spalten sind selten geeignet, außer wenn die Spalte immer eine bekannte Länge hat und der Zeichensatz ein Einzelbyte ist, wie z. B. eine UUID, die CHAR(36) COLLATE ascii_general_ci wäre .

https:/ /dev.mysql.com/doc/refman/5.7/en/storage-requirements.html#data-types-storage-reqs-strings