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

É mais eficiente separar dados relacionados grandes e pequenos na coluna de uma tabela SQL?


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.