sql >> Databasteknik >  >> RDS >> Mysql

Upptar kolumnerna char / varchar / text / longtext i MySQL full storlek i filsystemet även för delvis fyllda celler?

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

I princip alla dessa typer utom CHAR är variabel längd.

Till exempel, om du har VARCHAR(72) och du skriver abcd i den kommer du att lagra 5 byte. 4 byte för varje tecken och ett 1 byte prefix för att lagra längden på strängen (som är 4).

Om längden på strängen är över 255 tecken, kommer VARCHAR-prefixet att vara 2 byte. Alltså en VARCHAR(300) med en sträng på 256 tecken lagrad i den tar den upp 258 byte.

TINYTEXT har alltid ett prefix på 1 byte, eftersom du bara kan lagra 255 tecken i det, så abcd skulle ta 5 byte.

TEXT har ett prefix på 2 byte, så abcd skulle vara 6 byte.

LONGTEXT har ett prefix på 4 byte, så abcd skulle vara 8 byte.

Slutligen finns det den nästan värdelösa CHAR typ. En CHAR(72) kommer alltid att ta upp 72 byte oavsett vad du lagrar i den. Det är egentligen bara användbart för superkorta fält där det alltid finns exakt samma antal tecken i fältet. Som Y eller N skulle vara en bra CHAR(1) kandidat.




  1. Åtkomst nekad för användare ''@'localhost' (med lösenord:NEJ)

  2. Codds regler i SQL

  3. 'Kan inte ansluta till MySQL-servern på \'db\' Django-Restframework med Mysql i docker

  4. Docker:Kombinera flera bilder