หมายเหตุ: นี่อยู่คำตอบการพัฒนาองค์กรชั้นในที่มีขนาดใหญ่
นี่เป็นปัญหา RDBMS ไม่ใช่แค่ SQL Server และพฤติกรรมอาจน่าสนใจมาก สำหรับหนึ่งในขณะที่เป็นเรื่องปกติที่คีย์หลักจะได้รับการจัดทำดัชนีโดยอัตโนมัติ (ไม่ซ้ำกัน) แต่ก็ไม่ได้เป็นค่าสัมบูรณ์ มีหลายครั้งที่จำเป็นอย่างยิ่งที่จะต้องไม่จัดทำดัชนีคีย์หลักโดยเฉพาะ
ใน RDBMSs ที่สุดดัชนีที่ไม่ซ้ำกันจะถูกสร้างขึ้นโดยอัตโนมัติในคีย์หลักถ้าใครไม่ได้อยู่แล้ว ดังนั้นคุณสามารถสร้างดัชนีของคุณเองในคอลัมน์คีย์หลักก่อนที่จะประกาศเป็นคีย์หลักจากนั้นดัชนีนั้นจะถูกใช้ (ถ้ายอมรับได้) โดยเอ็นจินฐานข้อมูลเมื่อคุณใช้การประกาศคีย์หลัก บ่อยครั้งคุณสามารถสร้างคีย์หลักและอนุญาตให้สร้างดัชนีเฉพาะเริ่มต้นจากนั้นสร้างดัชนีสำรองของคุณเองในคอลัมน์นั้นจากนั้นปล่อยดัชนีเริ่มต้น
ตอนนี้เพื่อความสนุกสนาน - เมื่อใดที่คุณไม่ต้องการดัชนีคีย์หลักที่ไม่ซ้ำใคร คุณไม่ต้องการอย่างใดอย่างหนึ่งและไม่สามารถทนได้เมื่อตารางของคุณได้รับข้อมูล (แถว) เพียงพอที่จะทำให้การบำรุงรักษาดัชนีมีราคาแพงเกินไป สิ่งนี้แตกต่างกันไปขึ้นอยู่กับฮาร์ดแวร์เอ็นจิน RDBMS ลักษณะของตารางและฐานข้อมูลและภาระของระบบ อย่างไรก็ตามโดยทั่วไปจะเริ่มปรากฏขึ้นเมื่อตารางมีแถวถึงสองสามล้านแถว
ปัญหาสำคัญคือการแทรกแต่ละแถวหรือการอัปเดตคอลัมน์คีย์หลักจะทำให้เกิดการสแกนดัชนีเพื่อให้แน่ใจว่าไม่ซ้ำกัน การสแกนดัชนีที่ไม่ซ้ำกันนั้น (หรือเทียบเท่าใน RDBMS ใดก็ตาม) จะมีราคาแพงกว่ามากเมื่อตารางเติบโตขึ้นจนครองประสิทธิภาพของตาราง
ฉันได้จัดการกับปัญหานี้หลายครั้งด้วยตารางที่มีขนาดใหญ่ถึงสองพันล้านแถวพื้นที่เก็บข้อมูล 8 TB และส่วนแทรกสี่สิบล้านแถวต่อวัน ฉันได้รับมอบหมายให้ออกแบบระบบที่เกี่ยวข้องใหม่ซึ่งรวมถึงการทิ้งดัชนีคีย์หลักที่ไม่ซ้ำกันในขั้นตอนที่หนึ่ง อันที่จริงการลดลงของดัชนีนั้นเป็นสิ่งที่จำเป็นในการผลิตเพียงเพื่อให้หายจากไฟดับก่อนที่เราจะเข้าใกล้การออกแบบใหม่ การออกแบบใหม่นั้นรวมถึงการค้นหาวิธีอื่น ๆ เพื่อให้แน่ใจว่าคีย์หลักที่เป็นเอกลักษณ์และเข้าถึงข้อมูลได้อย่างรวดเร็ว