เรื่องน่ารู้เกี่ยวกับข้อมูลชนิด VARCHAR ใน MySQL

  • CHAR และ VARCHAR ถูกจัดเก็บในหน่วยความจำในขณะที่สอบถามข้อมูล ทำให้มีความเร็วในการสอบถามสูงกว่า
  • TEXT และ BLOB จัดเก็บเป็นตำแหน่งของข้อมูล (pointer) ลงในหน่วยความจำในขณะที่สอบถามข้อมูล ในการค้นหาข้อมูลจากข้อมูลประเภทนี้ จะเป็นการค้นหาจากที่จัดเก็บ (ใน Disk ตามตำแหน่งที่ pointer อ้างถึง) โดยตรง ดังนั้นจึงมีความเร็วในการสอบถามข้อมูลที่ต่ำกว่า
  • อย่างไรก็ตามหากมีการสอบถามข้อมูลที่มีขนาดใหญ่กว่าที่หน่วยความจำจะรองรับได้ ข้อมุลที่สอบถามจะถูกเก็บลงใน Disk แทนการเก็บในหน่วยความจำ ซึ่งจะมีผลให้ความเร็วในการค้นหาข้อมูลลดลงด้วย
  • ถ้าจำเป็นต้องค้นหาข้อมูลในฟิลด์ข้อมูลชนิด TEXT การแยกจัดเก็บข้อมูลที่เป็น TEXT ในตารางแยกต่างหากจะทำให้การสอบถามข้อมูลสามารถทำให้เร็วขึ้นได้ (ใช้การ JOIN ในการรวมผลลัพท์)
  • CHAR เก็บข้อมูลในขนาดที่คงที่ เช่น CHAR(4) จะมีการเก็บข้อมูลจำนวน 4 Bytes คงที่ ในขณะที่ VARCHAR, TEXT และ BLOB จะจัดเก็บข้อมูลตามขนาดของข้อมูลจริง
  • ขอบเขตข้อมูลที่จัดเก็บสำหรับ VARCHAR คือ 0-255 Bytes แต่บน MySQL 5.0.3 ขึ้นไป สามารถจัดเก็บได้ 0-65,535 Bytes ซึ่งขนาดของข้อมูลที่จัดเก็บได้จริง จะเป็นขนาดไม่เกินขนาดที่จัดเก็บได้ รวมกันทุกฟิลด์ต่อ 1 แถวข้อมูล (หรือเท่ากับ 65,535 Bytes)
  • ข้อมูลประเภทตัวอักษร ที่เป็น UTF-8 จะใช้พื้นที่ในการจัดเก็บระหว่าง 1-3 Bytes ต่อ 1 ตัวอักษร ดังนั้นหากขอบเขตของข้อมูลเป็น 255 Bytes จัดเก็บจริงจะได้น้อยกว่า 255 ตัวอักษร
^