VARCHAR
é armazenado em linha com a tabela. VARCHAR
é mais rápido quando o tamanho é razoável, a compensação do que seria mais rápido depende de seus dados e de seu hardware, você gostaria de comparar um cenário do mundo real com seus dados. O número máximo efetivo de bytes que podem ser armazenados em um
VARCHAR
ou VARBINARY
coluna está sujeita ao tamanho máximo de linha de 65,535 bytes
, que é compartilhado entre todas as colunas. Por exemplo, um
VARCHAR(255)
coluna pode conter uma string com um comprimento máximo de 255 caracteres. Supondo que a coluna use o conjunto de caracteres latin1 (um byte por caractere), o armazenamento real necessário é o comprimento da string (L), mais um byte para registrar o comprimento da string. Para a string 'abcd'
, L
é 4
e o requisito de armazenamento é de cinco bytes. Se a mesma coluna for declarada para usar o ucs2
conjunto de caracteres de byte duplo, o requisito de armazenamento é de 10 bytes:o comprimento de 'abcd' é de oito bytes e a coluna requer dois bytes para armazenar comprimentos porque o comprimento máximo é maior que 255 (até 510 bytes
). Para dados maiores, considere usar
TEXT
ou BLOB
. TEXT
e BLOB
colunas são implementadas de forma diferente no NDB
mecanismo de armazenamento, em que cada linha em um TEXT
coluna é composta por duas partes separadas. Um deles é de tamanho fixo (256 bytes)
, e é realmente armazenado na tabela original. O outro consiste em quaisquer dados que excedam 256 bytes
, que é armazenado em uma tabela oculta. As linhas nesta segunda tabela são sempre 2,000 bytes
grandes. Isso significa que o tamanho de um TEXT
coluna é 256
se size <= 256
(onde size representa o tamanho da linha); caso contrário, o tamanho é 256 + size + (2000 – (size – 256) % 2000)
. http://dev.mysql.com/doc/refman /5.6/en/storage-requirements.html
Depende da sua relação com o banco de dados, se você raramente usa esses campos na consulta. Por exemplo, para informações adicionais. Criar tabela separada é uma boa opção (normalizar).
OBSERVAÇÕES:
VARCHAR
é diferente com CHAR
. Se você criar VARCHAR(250)
e insira apenas 20
caracteres nele, então levará 5 bytes
+ L
diferente com CHAR(250)
, levará 250 bytes
+ L
para mesma condição.