Terlepas dari panjang yang Anda tentukan untuk kolom varchar Anda, ruang penyimpanan yang digunakan oleh kolom kosong akan sama.
Jenis CHAR dan VARCHAR
Ini hanya membahas ruang yang digunakan oleh kolom varchar dan tidak mempertimbangkan total ruang penyimpanan yang digunakan oleh baris, indeksnya, kunci primer dan kolom lainnya.
Seperti ypercube menyebutkan dalam komentarnya, ada pertimbangan tambahan untuk penyimpanan baris secara keseluruhan ketika setidaknya ada satu kolom yang dapat dibatalkan.
Struktur Baris Fisik Innodb
Bagian panjang variabel dari header catatan berisi vektor bit untuk menunjukkan kolom NULL. Jika ada 9 hingga 15 kolom yang bisa NULL, vektor bit menggunakan dua byte.)
...
Bagian panjang variabel dari header juga berisi panjang kolom panjang variabel. Setiap panjang membutuhkan satu atau dua byte, tergantung pada panjang maksimum kolom. Jika semua kolom dalam indeks BUKAN NULL dan memiliki panjang tetap, header catatan tidak memiliki bagian panjang variabel
Dan ya, ruang penyimpanan yang digunakan berubah berdasarkan pada jenis yang Anda pilih, apakah itu tetap atau variabel, pemeriksaan dan faktor-faktor lain seperti mesin.
MySQL membuat rekomendasi untuk mengoptimalkan penyimpanan data di sini: Mengoptimalkan Ukuran Data
Memperbarui
Satu pertimbangan tambahan dengan varchar dan itu adalah memori. Penting dalam MySQL untuk membatasi ukuran kolom panjang variabel sebanyak mungkin. Meskipun kolomnya variabel dan ruang penyimpanan yang digunakan adalah variabel, MySQL akan mengalokasikan memori dalam bentuk potongan tetap untuk menyimpan nilai. Misalnya varchar (200) akan menggunakan lebih banyak memori yang varchar (5). Ini bukan masalah ruang penyimpanan, tetapi masih sesuatu yang perlu dipertimbangkan saat mendefinisikan kolom Anda.