Depende do que você está usando. Eu odeio dar uma resposta tão genérica, mas é verdade. Geralmente, tente obter o tipo de dados o mais específico possível. Se suas strings nunca excederem algum limite superior de caracteres, use
VARCHAR
porque será um pouco mais eficiente. Se você precisar de mais espaço, use TEXT
. Se você não tem certeza de quanto espaço seu texto vai ocupar, você provavelmente deve usar TEXT
; a diferença de desempenho não é muito grande e é melhor estar preparado para o futuro do que arriscar ter que alterá-lo mais tarde quando seus requisitos mudarem. Apenas meus dois centavos. Nos comentários, Pitarou aponta que, se o MySQL criar uma tabela temporária para sua consulta (veja isto ),
TEXT
colunas não serão armazenadas na memória e terão que ser lidas do disco, o que é muito mais lento. (Fonte
, parte inferior da página.) No entanto, isso não deve importar para a maioria das consultas. Caso alguém esteja se perguntando como o PostgreSQL se compara, encontrei este benchmark que mostra que CHAR, VARCHAR e TEXT funcionam igualmente bem. Portanto, se você estiver usando o Postgres, não importa o tipo que você usa.