Sehen Sie sich http://dev.mysql.com an /doc/refman/5.7/en/string-type-overview.html
Grundsätzlich alle diese Typen außer CHAR
sind variabel lang.
Zum Beispiel, wenn Sie VARCHAR(72)
haben und Sie schreiben abcd
darin speichern Sie 5 Bytes. 4 Byte für jedes Zeichen und ein 1-Byte-Präfix zum Speichern der Länge der Zeichenfolge (die 4 ist).
Wenn die Länge der Zeichenfolge mehr als 255 Zeichen beträgt, beträgt das VARCHAR-Präfix 2 Bytes. Also ein VARCHAR(300)
mit einer darin gespeicherten Zeichenfolge mit 256 Zeichen belegt 258 Bytes.
TINYTEXT
hat immer ein 1-Byte-Präfix, weil man darin nur 255 Zeichen speichern kann, also abcd
würde 5 Bytes nehmen.
TEXT
hat ein 2-Byte-Präfix, also abcd
wären 6 Bytes.
LONGTEXT
hat ein 4-Byte-Präfix, also abcd
wären 8 Bytes.
Schließlich gibt es noch das fast nutzlose CHAR
Typ. Ein CHAR(72)
nimmt immer 72 Bytes ein, egal was Sie darin speichern. Es ist wirklich nur für superkurze Felder sinnvoll, wo es immer genau die gleiche Anzahl von Zeichen im Feld gibt. Wie Y
oder N
wäre ein gutes CHAR(1)
Kandidat.