Um longo
VARCHAR
é armazenado da mesma maneira que um TEXT
/BLOB
campo em InnoDB
(que eu suponho que você esteja usando para transacionalidade, integridade referencial e recuperação de falhas, certo?) - isto é, externamente ao restante da tabela no disco (o que pode exigir outra leitura de disco para recuperar). fonte
A menos que você precise indexar essas colunas (nesse caso
VARCHAR
é muito mais rápido) não há razão para usar VARCHAR
sobre TEXT
para campos longos - existem algumas otimizações específicas do mecanismo em MySQL
para ajustar a recuperação de dados de acordo com o comprimento, e você deve usar o tipo de coluna correto para tirar proveito disso. Caso você esteja usando
MyISAM
uma discussão aprofundada sobre o tópico está aqui .