Unabhängig von der Länge, die Sie für Ihre varchar-Spalte definieren, ist der von einer leeren Spalte belegte Speicherplatz derselbe.
Die Typen CHAR und VARCHAR
Dies bezieht sich nur auf den von der varchar-Spalte belegten Speicherplatz und nicht auf den von der Zeile, ihren Indizes, Primärschlüsseln und anderen Spalten belegten Gesamtspeicherplatz.
Wie Ypercube in seinem Kommentar erwähnt, gibt es zusätzliche Überlegungen für den Zeilenspeicher als Ganzes, wenn mindestens eine nullfähige Spalte vorhanden ist.
Innodb physikalische Zeilenstruktur
Der Teil mit variabler Länge des Datensatzkopfes enthält einen Bitvektor zum Anzeigen von NULL-Spalten. Wenn es 9 bis 15 Spalten gibt, die NULL sein können, verwendet der Bitvektor zwei Bytes.)
...
Der Teil der Kopfzeile mit variabler Länge enthält auch die Längen der Spalten mit variabler Länge. Jede Länge nimmt ein oder zwei Bytes in Anspruch, abhängig von der maximalen Länge der Spalte. Wenn alle Spalten im Index NICHT NULL sind und eine feste Länge haben, enthält der Datensatzkopf keinen Teil mit variabler Länge
Und ja, der verwendete Speicherplatz ändert sich je nach ausgewähltem Typ, ob fest oder variabel, der Sortierung und anderen Faktoren wie der Engine.
MySQL gibt hier Empfehlungen zur Optimierung der Datenspeicherung: Optimieren der Datengröße
Aktualisieren
Eine zusätzliche Überlegung mit varchar und das ist Speicher. In MySQL ist es wichtig, die Größe einer Spalte mit variabler Länge so weit wie möglich zu begrenzen. Obwohl die Spalte variabel ist und der verwendete Speicherplatz variabel ist, reserviert MySQL Speicher in festen Blöcken, um Werte zu speichern. Zum Beispiel verwendet varchar (200) mehr Speicher als varchar (5). Dies ist kein Speicherplatzproblem, muss jedoch bei der Definition der Spalten berücksichtigt werden.