sql >> Database teknologi >  >> RDS >> Mysql

Optager char / varchar / text / longtext kolonner i MySQL fuld størrelse i filsystemet selv for delvist udfyldte celler?

Tjek http://dev.mysql.com /doc/refman/5.7/da/string-type-overview.html

Dybest set alle disse typer undtagen CHAR er variabel længde.

For eksempel, hvis du har VARCHAR(72) og du skriver abcd i det, vil du gemme 5 bytes. 4 bytes for hvert tegn og et præfiks på 1 byte til at gemme længden af ​​strengen (som er 4).

Hvis længden af ​​strengen er over 255 tegn, vil VARCHAR-præfikset være 2 bytes. Altså en VARCHAR(300) med en streng på 256 tegn gemt i den fylder 258 bytes.

TINYTEXT har altid et præfiks på 1 byte, fordi du kun kan gemme 255 tegn i det, så abcd ville tage 5 bytes.

TEXT har et præfiks på 2 byte, så abcd ville være 6 bytes.

LONGTEXT har et 4 byte præfiks, så abcd ville være 8 bytes.

Til sidst er der den næsten ubrugelige CHAR type. En CHAR(72) vil altid fylde 72 bytes, uanset hvad du gemmer i den. Det er egentlig kun nyttigt for super korte felter, hvor der altid er nøjagtig det samme antal tegn i feltet. Som Y eller N ville være en god CHAR(1) kandidat.




  1. Tilslutning af SQL Server til Oracle

  2. Hvordan vælger jeg sidste 30 dages datoer i MySQL, selv om datoerne ikke er til stede i mysql?

  3. Hvordan forvandler man 2 forespørgsler med fælles kolonner (A, B) og (A, C) til kun én (A, B, C)?

  4. Hvordan gemmer man europæisk valuta i MySQL?