Câu hỏi này xuất hiện sau khi đọc một bình luận trong câu hỏi này:
Khi bạn tạo một bảng nhiều đến nhiều, bạn nên tạo khóa chính tổng hợp trên hai cột khóa ngoại hoặc tạo khóa chính "ID" thay thế tự động tăng dần và chỉ đặt chỉ mục trên hai cột FK của bạn (và có thể một ràng buộc duy nhất)? Những tác động đến hiệu suất chèn bản ghi mới / lập chỉ mục lại trong mỗi trường hợp là gì?
Về cơ bản, điều này:
PartDevice
----------
PartID (PK/FK)
DeviceID (PK/FK)
so với cái này:
PartDevice
----------
ID (PK/auto-increment)
PartID (FK)
DeviceID (FK)
Người bình luận nói:
làm cho hai ID trở thành PK có nghĩa là bảng được sắp xếp vật lý trên đĩa theo thứ tự đó. Vì vậy, nếu chúng ta chèn (Part1 / Device1), (Part1 / Device2), (Part2 / Device3), thì (Part 1 / Device3) cơ sở dữ liệu sẽ phải tách bảng ra và chèn cái cuối cùng vào giữa mục 2 và 3. Đối với nhiều bản ghi, điều này trở nên rất khó khăn vì nó liên quan đến việc xáo trộn hàng trăm, hàng nghìn hoặc hàng triệu bản ghi mỗi khi một bản ghi được thêm vào. Ngược lại, PK tự động gia tăng cho phép các bản ghi mới được gắn vào cuối cùng.
Lý do tôi hỏi là vì tôi luôn có xu hướng làm khóa chính tổng hợp mà không có cột tăng tự động thay thế, nhưng tôi không chắc liệu khóa thay thế có thực sự hiệu quả hơn không.