जब आप टेबल बनाते हैं तो वर्चर कॉलम की लंबाई आपके द्वारा घोषित लंबाई के लिए तय होती है। लंबाई 0 से 255 (MySQL 5.0.3 से पहले) और 0 से 65,535 (MySQL 5.0.3 और बाद में) तक कोई भी मान हो सकती है।
वर्चर का भंडारण स्ट्रिंग की लंबाई घोषित करने के लिए एक या दो बाइट्स के अतिरिक्त डेटा के बाइट्स है। यदि अधिकतम लंबाई 255 या उससे कम है तो केवल 1 बाइट लंबाई जोड़ी जाएगी।
यदि आप परिवर्तन तालिका का उपयोग करते हैं और अधिकतम लंबाई बदलते हैं तो कोई डेटा संग्रहण आकार प्रभावित नहीं होगा यदि परिभाषित अधिकतम लंबाई 255 से कम है। यदि आप अधिकतम लंबाई 255 से ऊपर बढ़ा रहे हैं तो यह स्टोरेज इंजन पर निर्भर है यदि यह दो बाइट्स को बाध्य करता है या 255 से नीचे के मानों के लिए नहीं, उस स्थिति में यह प्रत्येक पंक्ति के लिए 1 बाइट बढ़ जाएगा।
चार प्रकार वर्चर से भिन्न होता है क्योंकि चार हमेशा आवश्यक स्थान का उपयोग करता है, इसलिए यदि आपके पास चार (10) और वर्कर (10) थे, लेकिन प्रत्येक में केवल "हैलो" संग्रहीत किया गया था, तो चार सभी 10 बाइट्स का उपयोग करेगा, वर्चर में 6 बाइट्स होंगे ( हैलो के लिए 5 और लंबाई के लिए 1), इसलिए वर्चर कॉलम के आकार को बदलने से अधिक संग्रहण स्थान आवंटित नहीं होगा जैसे कि यह एक चार प्रकार था।
अब असली सवाल यह है कि आप PHP को वर्चर्स के आकार में हेरफेर क्यों करना चाहेंगे? आपको किसी कारण के लिए आकार निर्दिष्ट करना चाहिए, यदि आप एक परिवर्तनीय लंबाई फ़ील्ड चाहते हैं जो बहुत सारे टेक्स्ट (65,535 बाइट्स से अधिक) और गतिशील भी हो सकता है, इसलिए यह केवल आवश्यक न्यूनतम स्थान का उपयोग करता है शायद टेक्स्ट प्रकार आपकी स्थिति के लिए बेहतर हो सकते हैं ?