Bez względu na długość, którą określisz dla swojej kolumny varchar, przestrzeń dyskowa używana przez pustą kolumnę będzie taka sama.
Typy CHAR i VARCHAR
Dotyczy to tylko miejsca używanego przez kolumnę varchar i nie uwzględnia całkowitej przestrzeni dyskowej używanej przez wiersz, jego indeksów, kluczy podstawowych i innych kolumn.
Jak wspomina ypercube w swoim komentarzu, istnieją dodatkowe uwagi dotyczące przechowywania wierszy jako całości, gdy obecna jest co najmniej jedna kolumna z dopuszczalnymi wartościami.
Fizyczna struktura rzędów Innodb
Część nagłówka rekordu o zmiennej długości zawiera wektor bitowy do wskazania NULL kolumn. Jeśli jest gdzieś od 9 do 15 kolumn, które mogą mieć wartość NULL, wektor bitowy używa dwóch bajtów.)
...
Część nagłówka o zmiennej długości zawiera również długości kolumn o zmiennej długości. Każda długość zajmuje jeden lub dwa bajty, w zależności od maksymalnej długości kolumny. Jeśli wszystkie kolumny w indeksie NIE mają wartości NULL i mają stałą długość, nagłówek rekordu nie ma części o zmiennej długości
I tak, używane miejsce do przechowywania zmienia się w zależności od wybranego typu, czy jest stały, czy zmienny, sortowanie i inne czynniki, takie jak silnik.
MySQL zawiera zalecenia dotyczące optymalizacji przechowywania danych: Optymalizacja rozmiaru danych
Aktualizacja
Dodatkowa uwaga związana z varchar i pamięcią. W MySQL ważne jest, aby maksymalnie ograniczyć rozmiar kolumny o zmiennej długości. Mimo że kolumna jest zmienna, a używane miejsce do przechowywania jest zmienne, MySQL przydzieli pamięć w stałych porcjach do przechowywania wartości. Na przykład varchar (200) zużyje więcej pamięci niż varchar (5). To nie jest problem z przestrzenią dyskową, ale wciąż coś do rozważenia przy definiowaniu kolumn.