आप अक्सर डेटाबेस फ़ील्ड को 255 वर्णों का परिमाण सेट करते देखते हैं, पारंपरिक / ऐतिहासिक कारण क्या है? मुझे लगता है कि यह पेजिंग / मेमोरी सीमा और प्रदर्शन के साथ कुछ करना है, लेकिन 255 और 256 के बीच के अंतर ने मुझे हमेशा भ्रमित किया है।
varchar(255)
यह देखते हुए कि यह क्षमता या परिमाण है, सूचकांक नहीं है , 256 को 256 से अधिक क्यों पसंद किया जाता है? क्या कोई बाइट किसी उद्देश्य (टर्मिनेटर या अशक्त या कुछ) के लिए आरक्षित है?
संभवतया वर्चर (0) एक बकवास है (शून्य क्षमता है)? किस स्थिति में 2 ^ 8 का स्थान निश्चित रूप से 256 होना चाहिए?
क्या अन्य परिमाण हैं जो प्रदर्शन लाभ प्रदान करते हैं? उदाहरण के लिए, varchar (512) varchar (511) या varchar (510) की तुलना में कम प्रदर्शन करने वाला है?
क्या यह मूल्य सभी संबंध डेटाबेस, पुराने और नए के लिए समान है?
डिस्क्लेमर - मैं एक डेवलपर हूं जो डीबीए नहीं है, मैं फील्ड साइज और प्रकारों का उपयोग करता हूं जो मेरे व्यावसायिक तर्क के अनुकूल हैं जहां यह ज्ञात है, लेकिन मैं इस वरीयता के लिए ऐतिहासिक कारण जानना चाहूंगा , भले ही यह प्रासंगिक नहीं हो (लेकिन यहां तक कि अधिक अगर यह अभी भी प्रासंगिक है)।
संपादित करें:
जवाब के लिए धन्यवाद, कुछ सहमति प्रतीत होती है कि एक बाइट का उपयोग आकार को स्टोर करने के लिए किया जाता है, लेकिन यह मेरे दिमाग में निश्चित रूप से मामला नहीं सुलझाता है।
यदि मेटा डेटा (स्ट्रिंग लंबाई) को एक ही सन्निहित मेमोरी / डिस्क में संग्रहीत किया जाता है, तो यह कुछ समझ में आता है। मेटाडेटा के 1 बाइट और स्ट्रिंग डेटा के 255 बाइट्स, एक-दूसरे को बहुत अच्छी तरह से सूट करेंगे, और स्टोरेज के 256 सन्निहित बाइट्स में फिट होंगे, जो संभवतः साफ-सुथरा है।
लेकिन ... यदि मेटाडेटा (स्ट्रिंग की लंबाई) वास्तविक स्ट्रिंग डेटा (शायद मास्टर तालिका में) से अलग संग्रहीत की जाती है, तो स्ट्रिंग के डेटा की लंबाई को एक बाइट द्वारा बाधित करने के लिए, सिर्फ इसलिए कि केवल 1 बाइट पूर्णांक को स्टोर करना आसान है मेटाडेटा थोड़ा अजीब लगता है।
दोनों ही मामलों में, यह एक सूक्ष्मता प्रतीत होगी जो संभवतः DB कार्यान्वयन पर निर्भर करती है। 255 का उपयोग करने का अभ्यास बहुत व्यापक लगता है, इसलिए किसी व्यक्ति ने शुरुआत में इसके लिए एक अच्छे मामले का तर्क दिया होगा, क्या कोई याद कर सकता है कि वह मामला क्या था / है? प्रोग्रामर बिना किसी कारण के कोई नया अभ्यास नहीं अपनाएंगे, और यह एक बार नया रहा होगा।