หากคุณหมายถึง "มีโทษสำหรับการประกาศขนาดของเขตข้อมูลที่ใหญ่กว่าค่าใด ๆ ที่จัดเก็บจริงหรือไม่" ถ้าเป็นเช่นนั้นจะประกาศ varchar คำตอบคือไม่ เอ็นจิน SQL DB ทุกตัวที่ฉันรู้จักเก็บเฉพาะจำนวนอักขระที่กำหนดในข้อมูลจริง (บวกค่าความยาว) ดังนั้นถ้าคุณกำหนดเขตข้อมูลเป็น varchar (100) แต่เก็บเฉพาะ 10 อักขระในนั้นก็จะใช้เวลาเพียง 10 ตัวอักษรบนดิสก์ (บวก 2 ไบต์หรือมากกว่านั้นสำหรับความยาว) เมื่อมีข้อสงสัยฉันมักจะทำให้ทุ่ง varchar ของฉันมีขนาดใหญ่อย่างน่าขัน
หากคุณหมายถึง "มีโทษสำหรับการจัดเก็บฟิลด์อักขระที่ยาว" คำตอบคือใช่ พื้นที่ดิสก์วันนี้ราคาถูก แต่มันไม่ฟรีดังนั้นคุณไม่ต้องการเสียมันโดยไม่มีเหตุผล อาจมีความสำคัญมากกว่านั้นอาจต้องใช้เวลาในการอ่านข้อมูลออกจากดิสก์ดังนั้นยิ่งฟิลด์ข้อมูลของคุณยาวขึ้นเท่าไหร่โปรแกรมก็ยิ่งช้าลงเท่านั้น หากมีการจัดทำดัชนีฟิลด์สิ่งนี้จะทำให้การสืบค้นของคุณช้าลงจริง ๆ เนื่องจากการอ่านทุกครั้งจะต้องเปรียบเทียบค่าคีย์กับฟิลด์ยาวขนาดใหญ่นี้
โปรดทราบว่าหากคุณให้ช่องป้อนข้อมูลขนาดใหญ่แก่ผู้ใช้ผู้ใช้จะใช้งานไม่ช้าก็เร็ว
ทุกอย่างที่พูดมาฉันจะทำผิดด้านข้างใหญ่เกินไปเล็กเกินไป พื้นที่ดิสก์มีราคาถูกพอที่คุณไม่ต้องการบังคับให้ผู้ใช้คิดค้นตัวย่อได้ทันทีเนื่องจากไม่สามารถใส่ข้อมูลจริงลงในฟิลด์ที่มีอยู่ได้ ระบบที่ฉันใช้อยู่วันนี้มีฟิลด์คำอธิบายผลิตภัณฑ์ที่เล็กเกินไปสำหรับชื่อจริงของผลิตภัณฑ์ของเราดังนั้นผู้ใช้จึงต้องย่อ และแน่นอนว่าผู้ใช้ทุกคนมีตัวย่อแตกต่างกันดังนั้นเราจึงมีวิธีที่แตกต่างกันยี่สิบวิธีในการพูดในสิ่งเดียวกัน