Ein langer VARCHAR
wird wie ein TEXT
gespeichert /BLOB
Feld in InnoDB
(wovon ich annehme, dass Sie es für Transaktionalität, referenzielle Integrität und Wiederherstellung nach einem Absturz verwenden, oder?) - das heißt, extern zum Rest der Tabelle auf der Festplatte (was möglicherweise einen weiteren Festplattenlesevorgang zum Abrufen erfordert).
Es sei denn, Sie müssen diese Spalten indizieren (in diesem Fall VARCHAR
ist viel schneller) gibt es keinen Grund, VARCHAR
zu verwenden über TEXT
für lange Felder - es gibt einige Engine-spezifische Optimierungen in MySQL
um den Datenabruf entsprechend der Länge abzustimmen, und Sie sollten den richtigen Spaltentyp verwenden, um diese Vorteile zu nutzen.
Falls Sie MyISAM
verwenden Eine ausführliche Diskussion zu diesem Thema finden Sie hier .