เนื่องจาก varchar ใช้พื้นที่ดิสก์ตามสัดส่วนกับขนาดของเขตข้อมูลมีเหตุผลใดที่เราไม่ควรกำหนด varchar เป็นค่าสูงสุดเสมอเช่นvarchar(8000)
ใน SQL Server
บนโต๊ะสร้างถ้าฉันเห็นใครทำvarchar(100)
ฉันควรบอกพวกเขาไม่ผิดคุณควรทำvarchar(8000)
อย่างไร
เนื่องจาก varchar ใช้พื้นที่ดิสก์ตามสัดส่วนกับขนาดของเขตข้อมูลมีเหตุผลใดที่เราไม่ควรกำหนด varchar เป็นค่าสูงสุดเสมอเช่นvarchar(8000)
ใน SQL Server
บนโต๊ะสร้างถ้าฉันเห็นใครทำvarchar(100)
ฉันควรบอกพวกเขาไม่ผิดคุณควรทำvarchar(8000)
อย่างไร
คำตอบ:
สรุป: อย่าทำมัน
สมมติว่าคุณกำลังอ้างถึง SQL Server ฉันสามารถคิดได้
มีการ จำกัด ขนาด (8K) ของแถวในตารางและ SQL ช่วยให้คุณกำหนดเขตข้อมูล varchar ที่ในทางทฤษฎีอาจเกินขีด จำกัด นั้น ดังนั้นผู้ใช้อาจได้รับข้อผิดพลาดหากพวกเขาใส่ข้อมูลมากเกินไปในฟิลด์ที่เกี่ยวข้อง
เริ่มต้นด้วย SQL 2K8 คุณสามารถเกินขีด จำกัด นี้ แต่มีผลกระทบต่อประสิทธิภาพการทำงาน
นอกจากนี้ยังมีการตรวจสอบความสมเหตุสมผลทั้งหมดของการ จำกัด ขนาดของสิ่งที่คุณคาดหวังว่าข้อมูลจะเป็นอย่างไร หากคุณต้องการฟิลด์ความยาวไม่ จำกัด ทำไมไม่ไปกับข้อความหรือ ntext?
แน่นอนมันขึ้นอยู่กับข้อมูลที่ถูกเก็บไว้ในเขต?
บางสิ่งจะมีความยาวสูงสุดด้วยเหตุผลหลายประการและหากจะต้องมีความยาวสูงสุดนั่นก็ควรจะเป็นความยาวของสนาม
หากในทางทฤษฎีไม่มีความยาวสูงสุดฉันจะถามว่าทำไมถึงใช้ varchar
ฉันบริบทของฐานข้อมูล Oracle ฉันได้เรียนรู้ว่าการใช้ขนาดเขตข้อมูลที่เล็กที่สุดสำหรับคอลัมน์ฐานข้อมูลมักมีข้อผิดพลาดหนึ่งข้อ
เมื่อย้ายข้อมูลผ่านการนำเข้าการส่งออกจากฐานข้อมูลที่มีการเปรียบเทียบไบต์เดียวเป็นหนึ่งที่มีการเปรียบเทียบหลายไบต์ (เช่น Oracle XE) ความยาวเป็นไบต์สามารถเพิ่มและนำเข้าข้อมูลลงในตารางที่สร้างขึ้นโดยการนำเข้าล้มเหลว แน่นอนว่า Oracle มีตัวเลือกในการกำหนดความยาว varchar2 ไม่ว่าจะเป็นแบบถ่านหรือแบบไบต์
จุดของฉันที่นี่คือไม่ควรกำหนดเขตข้อมูลด้วยขนาดเล็กที่สุดเท่าที่จะทำได้เสมอไป ฉันได้เห็นตารางการเปลี่ยนแปลงจำนวนมากเพื่อเพิ่มเขตข้อมูลในภายหลัง (เกิดจากข้อกำหนดที่เปลี่ยนแปลง)
มี 20% - 100% ฟิลด์ที่ไม่ได้ใช้ด้วยเป็นตัวเลือกที่อภิปรายได้ที่นี่