Дължината на колона varchar е фиксирана спрямо дължината, която декларирате, когато създавате таблицата. Дължината може да бъде всяка стойност от 0 до 255 (преди MySQL 5.0.3) и от 0 до 65 535 (в MySQL 5.0.3 и по-нови).
Съхранението на varchar е байтовете данни с добавяне на един или два байта за деклариране на дължината на низа. Ако максималната дължина е 255 или по-малко, ще бъде добавен само 1 байт дължина.
Ако използвате alter table и промените максималната дължина, тогава размерът на съхранение на данни няма да бъде засегнат, ако дефинираната максимална дължина е под 255. Ако увеличавате максималната дължина над 255, тогава зависи от механизма за съхранение дали принуждава два байта или не за стойности под 255, в този случай ще се увеличи с 1 байт за всеки ред.
Типът char е различен от varchar, тъй като char винаги използва необходимото пространство, така че ако сте имали char(10) и varchar(10), но сте съхранили само „hello“ във всеки, char ще използва всичките 10 байта, vharchar ще съдържа 6 байта ( 5 за здравей и 1 за дължината), следователно промяната на размера на колоните varchar няма да разпредели повече място за съхранение, както би било, ако беше тип char.
Истинският въпрос сега е защо бихте искали PHP да манипулира размера на varchar? Трябва да посочите размера по причина, ако искате поле с променлива дължина, което може да съдържа много текст (повече от 65 535 байта), а също и динамично, така че да използва само минималното необходимо пространство, може би типовете TEXT може да са по-добри за вашата ситуация ?