Bekijk http://dev.mysql.com /doc/refman/5.7/en/string-type-overview.html
In principe zijn al deze typen behalve de CHAR
zijn van variabele lengte.
Als u bijvoorbeeld VARCHAR(72)
. heeft en je schrijft abcd
erin, bewaart u 5 bytes. 4 bytes voor elk teken, en een prefix van 1 byte om de lengte van de string op te slaan (dat is 4).
Als de string langer is dan 255 tekens, is het VARCHAR-voorvoegsel 2 bytes. Dus een VARCHAR(300)
met een string van 256 karakters erin opgeslagen, zal 258 bytes in beslag nemen.
TINYTEXT
heeft altijd een prefix van 1 byte, omdat je er maar 255 tekens in kunt opslaan, dus abcd
zou 5 bytes in beslag nemen.
TEXT
heeft een prefix van 2 bytes, dus abcd
zou 6 bytes zijn.
LONGTEXT
heeft een prefix van 4 bytes, dus abcd
zou 8 bytes zijn.
Ten slotte is er de bijna nutteloze CHAR
type. Een CHAR(72)
zal altijd 72 bytes in beslag nemen, ongeacht wat je erin opslaat. Het is eigenlijk alleen handig voor superkorte velden waar er altijd exact hetzelfde aantal tekens in het veld staat. Like Y
of N
zou een goede CHAR(1)
. zijn kandidaat.