Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Tipos de dados Varchar ou Text para comprimento de strings até alguns milhares de caracteres


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 a VARCHAR(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, adicione CHARACTER 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?