एक VARCHAR(255)
वर्ण सेट एन्कोडिंग के लिए आवश्यक प्रति वर्ण बाइट्स की संख्या की परवाह किए बिना, 255 वर्णों तक संग्रहीत कर सकते हैं।
भंडारण की आवश्यकता संग्रहीत वास्तविक डेटा की लंबाई (अधिकतम नहीं) की लंबाई है, साथ ही डेटा की लंबाई को संग्रहीत करने के लिए 1 या 2 बाइट्स - 1 बाइट का उपयोग तब तक किया जाता है जब तक कि बाइट्स में अधिकतम संभव लंबाई> 255... तो एक VARCHAR(255) COLLATE utf8mb4
लंबाई को स्टोर करने के लिए 2 बाइट्स का उपयोग करता है, जबकि एक VARCHAR(255) COLLATE ascii_general_ci
लंबाई को स्टोर करने के लिए 1 बाइट का उपयोग करता है। कोई भी कॉलम 255 से अधिक वर्णों को संग्रहीत नहीं कर सकता है।
संग्रहीत किए जा रहे डेटा के लिए उपयुक्त कॉलम आकार घोषित करें। 255 का उपयोग करना आम है, लेकिन आमतौर पर मैला डिजाइन का लाल झंडा होता है, क्योंकि यह दुर्लभ है कि यह विशेष मान सार्थक रूप से किसी कॉलम की अधिकतम उपयुक्त लंबाई का प्रतिनिधित्व करता है।
इसके विपरीत, एक CHAR(255) COLLATE utf8mb4
हमेशा 255 × 4 (अधिकतम संभव) बाइट्स प्रति कॉलम प्रति पंक्ति, और 0 बाइट्स लंबाई को स्टोर करने के लिए खपत करता है, क्योंकि संग्रहीत लंबाई भिन्न नहीं होती है। ये कॉलम शायद ही कभी उपयुक्त होते हैं, सिवाय इसके कि जब कॉलम हमेशा एक ज्ञात लंबाई हो और वर्ण सेट सिंगल-बाइट हो, जैसे कि UUID, जो कि CHAR(36) COLLATE ascii_general_ci
होगा। ।
https:/ /dev.mysql.com/doc/refman/5.7/hi/storage-requirements.html#data-types-storage-reqs-strings