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
CHARnur 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?