Es gibt verschiedene Stellen, an denen VARCHAR
und TEXT
unterscheiden oder nicht unterscheiden. Einige Dinge, die ich sage:
- Wenn die maximale Länge mehr als 512 Zeichen beträgt , gehen Sie mit
TEXT
. - Verwenden Sie niemals
TINYTEXT
-- es hat nur negative Werte relativ zuVARCHAR(255)
. - Verwenden Sie
VARCHAR(255)
nicht; Wählen Sie statt 255 ein angemessenes Maximum. (Dies ist eine geringfügige Optimierung in Bezug auf temporäre Tabellen in komplexen Abfragen.) - Verwenden Sie
CHAR
nur für Dinge, die wirklich feste Länge haben. Setzen Sie in fast allen solchen Fällen aufCHARACTER SET ascii
(oder lateinisch1). (Andernfalls wird mehr Platz benötigt als erwartet. - Verwenden Sie
CHARACTER SET ut8mb4
. (Ausnahmen werden immer seltener.)
(Sorry, ich schweife ab. Zurück zum Thema...)
Ich indiziere im Layout von InnoDB-Zeilen (es gibt 4 verschiedene ROW_FORMATs
), usw., VARCHAR(513)
wird im Wesentlichen nicht von TEXT
zu unterscheiden sein .
Eines der wenigen Argumente für VARCHAR
ist, dass es den Speicher auf die angegebene Länge begrenzt. Aber wie oft ist das wichtig?