Вижте http://dev.mysql.com /doc/refman/5.7/en/string-type-overview.html
По принцип всички тези типове с изключение на CHAR
са с променлива дължина.
Например, ако имате VARCHAR(72)
и пишете abcd
в него ще съхранявате 5 байта. 4 байта за всеки знак и 1 байтов префикс за съхраняване на дължината на низа (която е 4).
Ако дължината на низа е над 255 знака, тогава префиксът VARCHAR ще бъде 2 байта. Така че VARCHAR(300)
с низ от 256 символа, съхранен в него, ще заеме 258 байта.
TINYTEXT
винаги има префикс от 1 байт, защото можете да съхранявате само 255 знака в него, така че abcd
ще отнеме 5 байта.
TEXT
има префикс от 2 байта, така че abcd
ще бъде 6 байта.
LONGTEXT
има префикс от 4 байта, така че abcd
ще бъде 8 байта.
И накрая, има почти безполезният CHAR
Тип. A CHAR(72)
винаги ще заема 72 байта, независимо какво съхранявате в него. Наистина е полезно само за супер къси полета, където винаги има точно същия брой знаци в полето. Като Y
или N
би било добър CHAR(1)
кандидат.