โดยไม่คำนึงถึงความยาวที่คุณกำหนดสำหรับคอลัมน์ varchar ของคุณพื้นที่เก็บข้อมูลที่ใช้โดยคอลัมน์ว่างจะเหมือนกัน
ประเภท CHAR และ VARCHAR
สิ่งนี้ระบุพื้นที่ที่ใช้โดยคอลัมน์ varchar เท่านั้นและไม่ได้พิจารณาพื้นที่เก็บข้อมูลทั้งหมดที่ใช้โดยแถวดัชนีดัชนีคีย์หลักและคอลัมน์อื่น ๆ
เมื่อ ypercube กล่าวถึงในความคิดเห็นของเขามีข้อควรพิจารณาเพิ่มเติมสำหรับที่เก็บแถวโดยรวมเมื่อมีคอลัมน์ nullable อย่างน้อยหนึ่งคอลัมน์
โครงสร้างแถวทางกายภาพของ Innodb
ส่วนความยาวผันแปรของส่วนหัวของบันทึกมีบิตเวกเตอร์สำหรับการระบุคอลัมน์ NULL หากมีที่ใดก็ได้จาก 9 ถึง 15 คอลัมน์ที่สามารถเป็น NULL ได้บิตเวกเตอร์ใช้สองไบต์)
...
ส่วนความยาวตัวแปรของส่วนหัวยังมีความยาวของคอลัมน์ความยาวตัวแปร แต่ละความยาวใช้เวลาหนึ่งหรือสองไบต์ขึ้นอยู่กับความยาวสูงสุดของคอลัมน์ ถ้าคอลัมน์ทั้งหมดในดัชนีไม่ใช่ NULL และมีความยาวคงที่ส่วนหัวของเรกคอร์ดจะไม่มีส่วนที่มีความยาวผันแปรได้
และใช่พื้นที่เก็บข้อมูลที่ใช้มีการเปลี่ยนแปลงตามประเภทที่คุณเลือกไม่ว่าจะเป็นแบบคงที่หรือตัวแปรการเปรียบเทียบและปัจจัยอื่น ๆ เช่นเครื่องยนต์
MySQL ให้คำแนะนำในการเพิ่มประสิทธิภาพการจัดเก็บข้อมูลที่นี่: การปรับขนาดข้อมูลให้เหมาะสม
ปรับปรุง
ข้อควรพิจารณาเพิ่มเติมอีกอย่างหนึ่งสำหรับ varchar และนั่นคือหน่วยความจำ เป็นสิ่งสำคัญใน MySQL ที่จะ จำกัด ขนาดของคอลัมน์ความยาวตัวแปรให้มากที่สุด แม้ว่าคอลัมน์จะเป็นตัวแปรและพื้นที่เก็บข้อมูลที่ใช้เป็นตัวแปร แต่ MySQL จะจัดสรรหน่วยความจำในกลุ่มข้อมูลคงที่เพื่อเก็บค่า ตัวอย่างเช่น varchar (200) จะใช้หน่วยความจำเพิ่มเติมที่ varchar (5) นี่ไม่ใช่ปัญหาพื้นที่เก็บข้อมูล แต่ยังเป็นสิ่งที่ควรพิจารณาเมื่อกำหนดคอลัมน์ของคุณ