Mögliche Duplizieren:
MySQL: Large VARCHAR vs. TEXT?Wenn TEXT in mysql verwenden anstelle von VARCHAR
Seit VARCHAR
jetzt 65k Bytes haben kann, wenn dann sollten TEXT
statt VARCHAR
verwendet werden?
Mögliche Duplizieren:
MySQL: Large VARCHAR vs. TEXT?Wenn TEXT in mysql verwenden anstelle von VARCHAR
Seit VARCHAR
jetzt 65k Bytes haben kann, wenn dann sollten TEXT
statt VARCHAR
verwendet werden?
Ein langer VARCHAR
wird auf die gleiche Weise wie ein TEXT
/BLOB
Feld in InnoDB
gespeichert.
Von Speichern prospektive BLOB, TEXT als auch lange VARCHAR gleiche Weise von InnoDB behandelt werden. Aus diesem Grund nennt Innodb Handbuch es "lange Spalten" eher als BLOBs.
Wenn Sie diese Spalten zu indizieren müssen (in diesem Fall VARCHAR
ist viel schneller) gibt es keinen Grund VARCHAR
über TEXT
für lange Felder zu verwenden - es gibt einige motorspezifische Optimierungen in MySQL
abzustimmen der Datenabruf entsprechend der Länge, und Sie sollten den richtigen Spaltentyp verwenden, um diese zu nutzen.
Wenn Sie MyISAM
verwenden, ist eine eingehende Diskussion über das Thema here.
TEXT
und BLOB
sind, um die Tabelle mit der Tabelle einen Zeiger auf den Ort des aktuellen Speicher gespeichert off gerade ist.
VARCHAR
wird inline mit der Tabelle gespeichert. VARCHAR
ist schneller, wenn die Größe vernünftig ist.
Nach this test, VARCHAR
ist etwa dreimal so schnell wie Text.
Definieren Sie "langes Feld". –
@PaulBrewczynski> 768 Bytes (siehe den Link Lion gepostet) – delrox
Eine Korrektur für InnoDB: TEXT und BLOB werden nur in der Tabelle in InnoDB gespeichert, wenn "long" (> 768 Bytes), und nur der Schwanz aus Tabelle (ähnlich zu VARCHAR). Der wirkliche Unterschied ist, dass die maximalen Längen sich unterscheiden, und mit VARCHAR müssen Sie eine maximale Länge angeben (erzwingt zusammen mit dem Systemlimit von 65k). – delrox
Text sollte für wirklich lange Strings von unbestimmter Länge verwendet werden. Außerdem sind Abfragen, die TEXT-Felder zurückgeben, viel langsamer als ihre VARCHAR-Gegenstücke.
In meiner Datenbank habe ich eine Spalte namens Beschreibung. Sollte der Datentyp ein VARCHAR oder TEXT sein? Ich bin nicht sicher, wie lange die Beschreibungsdaten sein werden, aber ich plane, eine Wortzahlgrenze auf das Frontend zu setzen, so dass es maximale Länge hat. – codeinprogress
Wenn Sie mehr als 65k Zeichen benötigen. :) – GordonM
Das sollte 65k * Bytes * sein, nicht Zeichen, glaube ich – davek
Oh, ja. 65k Bytes. Meine Frage wurde aktualisiert. – enchance