यदि आपका मतलब है, "क्या वास्तव में इसमें संग्रहीत किसी भी मूल्य की तुलना में क्षेत्र के आकार को बड़ा घोषित करने के लिए जुर्माना है?", तो जब तक इसे varchar घोषित किया जाता है, तब तक उत्तर नहीं होता है। हर SQL DB इंजन जिसे मैं स्टोर करता हूं, केवल वास्तव में डेटा में दिए गए वर्णों की संख्या (साथ ही एक लंबाई मान)। इसलिए यदि आप फ़ील्ड को varchar (100) के रूप में परिभाषित करते हैं, लेकिन इसमें केवल 10 वर्णों को संग्रहीत करते हैं, तो यह केवल डिस्क पर 10 वर्णों (प्लस 2 बाइट्स या लंबाई के लिए) को ले जाएगा। जब संदेह होता है, तो मैं नियमित रूप से अपने वर्चर फ़ील्ड को हास्यास्पद रूप से बड़ा बनाता हूं।
यदि आपका मतलब है, "क्या लंबे चरित्र वाले क्षेत्रों को संग्रहीत करने के लिए कोई दंड है," इसका उत्तर हां है। डिस्क स्थान आज सस्ता है, लेकिन यह मुफ़्त नहीं है, इसलिए आप इसे बिना किसी कारण के बर्बाद नहीं करना चाहते हैं। संभवतः अधिक महत्वपूर्ण है, डिस्क से डेटा पढ़ने में समय लगता है, इसलिए आपके डेटा फ़ील्ड जितने लंबे समय तक रहेंगे, प्रोग्राम उतना ही धीमा हो जाएगा। यदि फ़ील्ड अनुक्रमित है, तो यह वास्तव में आपकी पुनर्प्राप्ति को धीमा कर सकता है, क्योंकि हर पढ़ने के लिए इस बड़े लंबे क्षेत्र के खिलाफ महत्वपूर्ण मूल्य की तुलना करना होगा।
ध्यान रखें कि यदि आप उपयोगकर्ता को एक बड़ा डेटा प्रविष्टि क्षेत्र देते हैं, तो वे इसका उपयोग जल्द या बाद में करेंगे।
उस सब ने कहा, मैं बहुत छोटे की बजाय बहुत बड़े के पक्ष में हूँ। डिस्क स्थान काफी सस्ता है कि आप उपयोगकर्ताओं को मक्खी पर संक्षिप्तिकरण का आविष्कार करने के लिए मजबूर नहीं करना चाहते क्योंकि वे उपलब्ध क्षेत्र में वास्तविक डेटा को फिट नहीं कर सकते हैं। आज मैं जिस सिस्टम पर काम कर रहा हूं, उसमें उत्पाद विवरण फ़ील्ड है जो हमारे उत्पादों के कई वास्तविक नामों के लिए बहुत छोटा है, इसलिए उपयोगकर्ताओं को संक्षिप्त करना होगा। और निश्चित रूप से प्रत्येक उपयोगकर्ता अलग तरीके से संक्षिप्त करता है, इसलिए हमारे पास एक ही बात कहने के लिए बीस अलग-अलग तरीके हैं।