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

As colunas char / varchar / text / longtext no MySQL ocupam o tamanho total no sistema de arquivos, mesmo para células parcialmente preenchidas?


Confira http://dev.mysql.com /doc/refman/5.7/en/string-type-overview.html

Basicamente, todos esses tipos, exceto o CHAR são de comprimento variável.

Por exemplo, se você tiver VARCHAR(72) e você escreve abcd nele, você armazenará 5 bytes. 4 bytes para cada caractere e um prefixo de 1 byte para armazenar o comprimento da string (que é 4).

Se o comprimento da string for superior a 255 caracteres, o prefixo VARCHAR será de 2 bytes. Portanto, um VARCHAR(300) com uma cadeia de 256 caracteres armazenada nele ocupará 258 bytes.

TINYTEXT tem um prefixo de 1 byte sempre, porque você só pode armazenar 255 caracteres nele, então abcd levaria 5 bytes.

TEXT tem um prefixo de 2 bytes, então abcd seria de 6 bytes.

LONGTEXT tem um prefixo de 4 bytes, então abcd seria 8 bytes.

Por último, há o quase inútil CHAR modelo. Um CHAR(72) sempre ocupará 72 bytes, não importa o que você armazene nele. É realmente útil apenas para campos super curtos, onde sempre há exatamente o mesmo número de caracteres no campo. Curtir Y ou N seria um bom CHAR(1) candidato.