"Alan boyutunu gerçekten içinde depolanmış olan herhangi bir değerden daha büyük olarak bildirmek için bir ceza var mı?" Demek istiyorsanız, varchar olarak belirtildiği sürece cevap hayırdır. Bildiğim her SQL DB motoru, yalnızca verilerde verilen karakter sayısını (artı uzunluk değeri) depolar. Bu nedenle, alanı varchar (100) olarak tanımlar, ancak içine yalnızca 10 karakter depolarsanız, diskte yalnızca 10 karakter alır (artı uzunluk için 2 bayt veya daha fazla). Şüphe duyduğumda, varchar alanlarımı rutin bir şekilde gülünç hale getiriyorum.
"Uzun karakter alanlarını saklamanın bir cezası var mı?" Bugün disk alanı ucuz, ancak ücretsiz değil, bu yüzden hiçbir sebeple boşa harcamak istemezsiniz. Muhtemelen daha da önemlisi, verileri diskten okumak zaman alır, bu nedenle veri alanlarınız ne kadar uzun olursa program yavaşlar. Alan dizine eklenmişse, her okumanın anahtar değerini bu büyük uzun alanla karşılaştırması gerekeceğinden, bu durum alımlarınızı yavaşlatabilir.
Kullanıcıya büyük bir veri giriş alanı verirseniz, bunu er ya da geç kullanacaklarını unutmayın.
Bütün bunlar, çok küçük yerine çok büyük tarafında hata yapardım dedi. Disk alanı, kullanıcıları gerçek alana mevcut alana sığmayacakları için anında kısaltma yapmaya zorlamak istemediğiniz kadar ucuzdur. Bugün üzerinde çalıştığım sistemin, ürünlerimizin gerçek isimlerinin çoğu için çok küçük bir ürün açıklaması alanı var, bu yüzden kullanıcılar kısaltmak zorunda. Ve elbette her kullanıcı farklı şekilde kısalır, bu yüzden aynı şeyi söylemenin yirmi farklı yolu vardır.