Existem vários lugares onde
VARCHAR e TEXT diferem ou não. Algumas coisas que digo:- Se o comprimento máximo for superior a 512 caracteres , vá com
TEXT. - Nunca use
TINYTEXT-- tem apenas negativos relativos aVARCHAR(255). - Não use
VARCHAR(255); escolha um máximo razoável em vez de 255. (Esta é uma pequena otimização relacionada à tabela temporária em consultas complexas.) - Usar
CHARapenas para coisas que são realmente de comprimento fixo. Em quase todos esses casos, adicioneCHARACTER SET ascii(ou latim1). (Caso contrário, ocupará mais espaço do que o esperado. - Use
CHARACTER SET ut8mb4. (As exceções estão se tornando cada vez mais raras.)
(Desculpe, eu discordo. Voltando ao tópico...)
Eu indexando, no layout das linhas do InnoDB (existem 4 diferentes
ROW_FORMATs ), etc, VARCHAR(513) será essencialmente indistinguível de TEXT . Um dos poucos argumentos para
VARCHAR é que limita a loja ao comprimento dado. Mas com que frequência isso é importante?