Długi VARCHAR
jest przechowywany w taki sam sposób jak TEXT
/BLOB
pole w InnoDB
(którego, jak zakładam, używasz do transakcyjności, integralności referencyjnej i odzyskiwania po awarii, prawda?) - to znaczy na zewnątrz w stosunku do reszty tabeli na dysku (co może wymagać odczytu z innego dysku, aby pobrać).
Chyba że musisz indeksować te kolumny (w takim przypadku VARCHAR
jest znacznie szybszy) nie ma powodu, aby używać VARCHAR
ponad TEXT
dla długich pól - w MySQL
są pewne optymalizacje specyficzne dla silnika aby dostroić pobieranie danych do długości, i powinieneś użyć właściwego typu kolumny, aby z nich skorzystać.
Jeśli używasz MyISAM
dogłębną dyskusję na ten temat można znaleźć tu .