Os bancos de dados estão intensamente preocupados com o desempenho - velocidade e minimização do armazenamento. Na maioria das outras partes do mundo dos computadores, você não se incomodará com quantos caracteres há na sua cadeia de caracteres; poderia ser um, poderia ser todo o conteúdo de uma enciclopédia; é tudo apenas uma corda. De fato, muitos idiomas nem mesmo o incomodam, seja uma string ou um número.
Porém, à medida que os computadores ficam mais rápidos e ganham mais memória, as pessoas colocam mais dados em seus bancos de dados e fazem consultas mais sofisticadas. Para um banco de dados, a CPU e a memória são hoje tão limitantes quanto nos dias de memória principal de 64Kb e discos rígidos de 10Mb (em computadores mainframe ).
Um número fixo de bytes é muito mais fácil de lidar do que um número de tamanho variável. 10 bytes é muito mais fácil de lidar do que 1.000.000. Portanto, seu banco de dados deseja que você dê uma pista para fornecer um gigabyte de resultados de terrabytes de dados em microssegundos. Se você não estiver usando seu banco de dados com tanta força, não precisará da velocidade que ele oferece e ficará aborrecido com as perguntas desnecessárias. Mas se você precisar do desempenho, ficará feliz em lhe dar algumas dicas.
Conforme observado nas outras respostas, use char
se ele sempre usar um certo número de caracteres, varchar
se o comprimento puder variar, mas não for muito grande (meu palpite é que a maioria dos DBs o trata como um char
ou text
dependendo do tamanho) e text
se pode ter qualquer comprimento. Se suas tentativas SQL para usar uma text
coluna, pode ser melhor para resumi-lo de alguma forma, e colocá-lo em um char
ou pequena varchar
coluna também, em seguida, fazer where
's e order by
é sobre isso. Claro, isso é apenas se o desempenho é importante para você.
text
está obsoleto. Há também considerações de uso relacionadas a onde os dados são armazenados e como, portanto, são acessados.