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 .