Aby odpowiedzieć na pytanie, na dysku MySql używa 1 + rozmiar, który jest używany w polu do przechowywania danych (więc gdyby kolumna była zadeklarowana varchar(45), a polem było "FooBar" wykorzystałby 7 bajtów na dysku, chyba że oczywiście używasz zestawu znaków wielobajtowych, gdzie używałby 14 bajtów). Tak więc, niezależnie od tego, jak zadeklarujesz swoje kolumny, nie będzie to miało znaczenia po stronie przechowywania (stwierdzasz, że martwisz się optymalizacją dysku dla ogromnej tabeli). Jednak ma to znaczenie w zapytaniach, ponieważ VARCHAR są konwertowane na CHAR, gdy MySql tworzy tabelę tymczasową (SORT, ORDER itp.) i im więcej rekordów zmieścisz na jednej stronie, tym mniej pamięci i szybsze skanowanie tabeli być.