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
CHAR
apenas 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?