Un VARCHAR
largo se almacena de la misma manera que un TEXT
/BLOB
campo en InnoDB
(que supongo que está utilizando para la transaccionalidad, la integridad referencial y la recuperación de fallas, ¿verdad?), Es decir, externamente al resto de la tabla en el disco (lo que puede requerir otra lectura del disco para recuperar).
A menos que necesite indexar estas columnas (en cuyo caso VARCHAR
es mucho más rápido) no hay razón para usar VARCHAR
sobre TEXT
para campos largos:hay algunas optimizaciones específicas del motor en MySQL
para ajustar la recuperación de datos según la longitud, y debe usar el tipo de columna correcto para aprovecharlos.
En caso de que esté utilizando MyISAM
una discusión detallada sobre el tema está aquí .