Незалежно від довжини, яку ви визначаєте для своєї колонки varchar, місце для зберігання, яке використовується порожнім стовпцем, буде однаковим.
Типи CHAR і VARCHAR
Це стосується лише простору, використовуваного стовпцем varchar, і не враховує загальний обсяг пам’яті, що використовується рядком, його індекси, первинні ключі та інші стовпці.
Як згадує ypercube у своєму коментарі, існують додаткові міркування щодо зберігання рядків у цілому, коли присутній хоча б один стовпчик, що зводить нанівець.
Фізична будова Innodb
Частина заголовка запису змінної довжини містить бітовий вектор для вказівки стовпців NULL. Якщо десь від 9 до 15 стовпців, які можуть бути NULL, бітовий вектор використовує два байти.)
...
Частина заголовка змінної довжини також містить довжини стовпців змінної довжини. Кожна довжина займає один або два байти, залежно від максимальної довжини стовпця. Якщо всі стовпці в індексі НЕ NULL і мають фіксовану довжину, заголовок запису не має частини змінної довжини
І так, використовуваний простір зберігання змінюється залежно від обраного типу, фіксований чи змінний, коефіцієнт порівняння та інші фактори, такі як двигун.
MySQL пропонує тут рекомендації щодо оптимізації зберігання даних: Оптимізація розміру даних
Оновлення
Один додатковий розгляд з varchar і це пам'ять. У MySQL важливо максимально обмежити розмір стовпця змінної довжини. Навіть незважаючи на те, що стовпець є змінним і використовуваний простір зберігання є змінним, MySQL виділить пам'ять у фіксованих фрагментах для зберігання значень. Наприклад, varchar (200) буде використовувати більше пам'яті, ніж varchar (5). Це не проблема місця для зберігання, але все-таки щось слід враховувати при визначенні своїх стовпців.