Varchar sütununuz için tanımladığınız uzunluk ne olursa olsun, boş bir sütun tarafından kullanılan depolama alanı aynı olacaktır.
CHAR ve VARCHAR Çeşitleri
Bu yalnızca varchar sütununun kullandığı alanı ele alır ve satır tarafından kullanılan toplam depolama alanını, dizinlerini, birincil anahtarlarını ve diğer sütunları dikkate almaz.
Ypercube yorumunda belirtildiği gibi, en az bir boş sütun olduğunda bir bütün olarak satır depolaması için ek hususlar vardır.
Innodb Fiziksel Sıra Yapısı
Kayıt başlığının değişken uzunluktaki kısmı, NULL sütunları belirtmek için bir bit vektörü içerir. NULL olabilen 9 ila 15 sütun arasında herhangi bir yer varsa, bit vektörü iki bayt kullanır.)
...
Üstbilginin değişken uzunluktaki kısmı, değişken uzunluktaki sütunların uzunluklarını da içerir. Her uzunluk, sütunun maksimum uzunluğuna bağlı olarak bir veya iki bayt alır. Dizindeki tüm sütunlar BOŞ DEĞİLDİR ve sabit bir uzunluğa sahipse, kayıt üstbilgisinde değişken uzunlukta bir parça yoktur
Ve evet, kullanılan depolama alanı seçtiğiniz türe göre değişir, sabit veya değişken, harmanlama ve motor gibi diğer faktörlere göre değişir.
MySQL burada veri depolama alanını optimize etme konusunda önerilerde bulunur: Veri Boyutunu Optimize Etme
Güncelleme
Varchar ile ek bir düşünce ve bu hafıza. MySQL'de değişken uzunluktaki bir sütunun boyutunu olabildiğince sınırlamak önemlidir. Sütun değişken ve kullanılan depolama alanı değişken olsa da, MySQL değerleri depolamak için sabit parçalar halinde bellek ayıracaktır. Örneğin varchar (200), varchar (5) 'ten daha fazla bellek kullanacaktır. Bu bir depolama alanı sorunu değil, sütunlarınızı tanımlarken göz önünde bulundurulması gereken bir şeydir.