Van MySQL Documentatie :
Het verschil tussen CHAR
en VARCHAR
waarden is de manier waarop ze worden opgeslagen, CHAR (10)
vereist 10 bytes opslagruimte, ongeacht het aantal tekens dat u gebruikt, omdat de gegevens rechts zijn gevuld met spaties, VARCHAR (10)
duurt slechts 1 byte (in een tekenset van 1 byte) + voorvoegsel voor lengte (1 als de lengte 255 of minder is, anders 2... Ik weet niet waarom key_len voor EXPLAIN
voeg 2 bytes toe)
Ik begrijp niet wat je bedoelt met volgspaties, hoewel ik me kan voorstellen dat je doelt op het teveel aan volgspaties, met VARCHAR
deze worden afgekapt met een waarschuwing, ondertussen in CHAR
kolommen deze spaties worden stil afgekapt, dit heeft een bepaalde reden CHAR
worden opgeslagen met aan het einde blanco's.
Over tekenset in deze link u kunt zien dat het aantal tekens voor de CHAR
of VARCHAR
is hetzelfde, hoewel uw opslag 1 tot 4 bytes per teken nodig heeft, hier
is de lijst met ondersteunde tekensets en hier de bytes per teken.
Wat ik heb gelezen over verschillende rijenindelingen voor InnoDB
Kenmerken van redundante rij-indelingen :
COMPACTE kenmerken van rij-indeling :