Z MySQL Dokumentace :
Rozdíl mezi CHAR
a VARCHAR
hodnoty je způsob, jakým jsou uloženy, CHAR (10)
vyžaduje 10 bajtů úložiště bez ohledu na to, kolik znaků použijete, protože data jsou správně doplněna mezerami, VARCHAR (10)
trvá pouze 1 bajt (v 1 bajtové znakové sadě) + předpona délky (1, když je délka 255 nebo méně, 2 jinak... Nevím, proč key_len pro EXPLAIN
přidat 2 bajty)
Nerozumím, co máte na mysli s mezerami na konci, i když si umím představit, že máte na mysli přebytek mezer na konci s VARCHAR
tyto jsou zkráceny s varováním, mezitím v CHAR
sloupce jsou tyto mezery tiše zkráceny, má to určitý smysl příčina CHAR
jsou uloženy s koncovými mezerami na konci.
Pokud jde o znakovou sadu v tomto odkazu můžete vidět, že počet znaků pro CHAR
nebo VARCHAR
je stejný, i když vaše úložiště bude vyžadovat 1 až 4 bajty na znak, zde
je seznam podporovaných znakových sad a zde bajtů na znak.
Co jsem četl o různých formátech řádků pro InnoDB
Redundantní vlastnosti formátu řádků :
Kompaktní charakteristika formátu řádků :