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

Varchar- oder Textdatentypen für Zeichenfolgen mit einer Länge von bis zu einigen Tausend Zeichen

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 zu VARCHAR(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 auf CHARACTER 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?