คุณมักจะเห็นเขตข้อมูลฐานข้อมูลตั้งค่าให้มีขนาด 255 ตัวอักษรเหตุผลดั้งเดิม / ประวัติศาสตร์คืออะไร ฉันคิดว่ามันเป็นเรื่องเกี่ยวกับการ จำกัด การเพจ / หน่วยความจำและประสิทธิภาพ แต่ความแตกต่างระหว่าง 255 และ 256 ทำให้ฉันสับสนอยู่เสมอ
varchar(255)
พิจารณานี้เป็นความจุหรือขนาดไม่ได้เป็นดัชนี , ทำไม 255 ที่ต้องการมากกว่า 256? ไบต์ถูกสงวนไว้สำหรับวัตถุประสงค์บางอย่าง (terminator หรือ null หรืออะไรบางอย่าง)?
สมมุติว่า varchar (0) เป็นเรื่องไร้สาระ (มีความจุเป็นศูนย์) หรือไม่ ในกรณีใดพื้นที่ 2 ^ 8 ควรเป็น 256 แน่นอน?
มีขนาดอื่นที่ให้ประโยชน์ด้านประสิทธิภาพหรือไม่ ตัวอย่างเช่น varchar (512) มีประสิทธิภาพน้อยกว่า varchar (511) หรือ varchar (510)
ค่านี้เหมือนกันสำหรับฐานข้อมูลความสัมพันธ์ทั้งหมดเก่าและใหม่หรือไม่
ข้อจำกัดความรับผิดชอบ - ฉันเป็นนักพัฒนาไม่ใช่ DBA ฉันใช้ขนาดและประเภทของเขตข้อมูลที่เหมาะสมกับตรรกะทางธุรกิจของฉันซึ่งเป็นที่รู้จัก แต่ฉันต้องการทราบเหตุผลทางประวัติศาสตร์สำหรับการตั้งค่านี้แม้ว่าจะไม่เกี่ยวข้องกันอีกต่อไป มากขึ้นถ้ามันยังเกี่ยวข้อง)
แก้ไข:
ขอบคุณสำหรับคำตอบดูเหมือนว่าจะมีความเห็นร่วมกันว่าไบต์ใช้สำหรับจัดเก็บข้อมูลขนาดเล็ก แต่สิ่งนี้ไม่ได้ตัดสินสิ่งที่อยู่ในใจของฉัน
หากข้อมูลเมตา (ความยาวสตริง) ถูกเก็บไว้ในหน่วยความจำ / ดิสก์ที่ต่อเนื่องกันมันจะมีเหตุผล 1 ไบต์ของข้อมูลเมตาและ 255 ไบต์ของข้อมูลสตริงจะเหมาะสมกันอย่างมากและพอดีกับ 256 ไบต์ของพื้นที่เก็บข้อมูลที่อยู่ติดกันซึ่งน่าจะเป็นระเบียบเรียบร้อย
แต่ ... ถ้าเมตาดาต้า (ความยาวสตริง) ถูกจัดเก็บแยกต่างหากจากข้อมูลสตริงจริง (ในตารางต้นแบบ) บางทีก็เพื่อจำกัดความยาวของข้อมูลของสตริงโดยหนึ่งไบต์เพียงเพราะง่ายต่อการจัดเก็บเพียงจำนวนเต็ม 1 ไบต์ ของข้อมูลเมตาดูเหมือนว่าแปลก
ในทั้งสองกรณีดูเหมือนว่าจะมีความละเอียดอ่อนซึ่งอาจขึ้นอยู่กับการใช้งานฐานข้อมูล การฝึกฝนการใช้ 255 ดูเหมือนจะค่อนข้างแพร่หลายดังนั้นบางคนต้องเถียงเป็นกรณีที่ดีสำหรับการเริ่มต้นทุกคนสามารถจำกรณีที่เป็น / คืออะไร? โปรแกรมเมอร์จะไม่ยอมรับแนวปฏิบัติใหม่ ๆ โดยไม่มีเหตุผลและสิ่งนี้จะต้องเป็นเรื่องใหม่อีกครั้ง