คำถามนี้เกิดขึ้นหลังจากอ่านความคิดเห็นในคำถามนี้:
เมื่อคุณสร้างตารางแบบกลุ่มต่อกลุ่มคุณควรสร้างคีย์หลักแบบผสมในคอลัมน์คีย์นอกสองคอลัมน์หรือสร้างคีย์หลัก "ID" ตัวแทน "ที่เพิ่มขึ้นอัตโนมัติ" และใส่ดัชนีในคอลัมน์ FK สองคอลัมน์ของคุณ (และอาจ ข้อ จำกัด เฉพาะ)? อะไรคือผลกระทบต่อประสิทธิภาพในการแทรกระเบียนใหม่ / การจัดทำดัชนีใหม่ในแต่ละกรณี?
โดยทั่วไปสิ่งนี้:
PartDevice
----------
PartID (PK/FK)
DeviceID (PK/FK)
เทียบกับสิ่งนี้:
PartDevice
----------
ID (PK/auto-increment)
PartID (FK)
DeviceID (FK)
ผู้แสดงความคิดเห็นกล่าวว่า:
การทำให้สอง ID เป็น PK หมายถึงตารางถูกเรียงลำดับทางกายภาพบนดิสก์ตามลำดับนั้น ดังนั้นหากเราแทรก (Part1 / Device1), (Part1 / Device2), (Part2 / Device3) ดังนั้น (Part 1 / Device3) ฐานข้อมูลจะต้องแยกตารางออกจากกันและแทรกรายการสุดท้ายระหว่างรายการ 2 และ 3 สำหรับ หลาย ๆ ระเบียนสิ่งนี้จะกลายเป็นปัญหาอย่างมากเนื่องจากเกี่ยวข้องกับการสับหลายร้อยหลายพันหรือหลายล้านระเบียนทุกครั้งที่มีการเพิ่ม ในทางตรงกันข้าม PK ที่สร้างขึ้นโดยอัตโนมัติช่วยให้สามารถบันทึกข้อมูลใหม่ได้จนจบ
เหตุผลที่ฉันถามเป็นเพราะฉันมักจะทำคีย์หลักแบบผสมโดยไม่มีคอลัมน์การเพิ่มอัตโนมัติตัวแทน แต่ฉันไม่แน่ใจว่าคีย์ตัวแทนมีประสิทธิภาพมากกว่าหรือไม่