Diese Frage wird gestellt, nachdem ein Kommentar in dieser Frage gelesen wurde:
Wenn Sie eine Viele-zu-Viele-Tabelle erstellen, sollten Sie einen zusammengesetzten Primärschlüssel für die beiden Fremdschlüsselspalten erstellen oder einen automatisch inkrementierten Ersatz-Primärschlüssel "ID" erstellen und einfach Indizes für Ihre beiden FK-Spalten (und möglicherweise) erstellen eine einzigartige Einschränkung)? Was sind die Auswirkungen auf die Leistung beim Einfügen neuer Datensätze / beim erneuten Indizieren?
Grundsätzlich ist dies:
PartDevice
----------
PartID (PK/FK)
DeviceID (PK/FK)
gegen dieses:
PartDevice
----------
ID (PK/auto-increment)
PartID (FK)
DeviceID (FK)
Der Kommentator sagt:
Wenn Sie die beiden IDs zur PK machen, wird die Tabelle in dieser Reihenfolge physisch auf der Festplatte sortiert. Wenn wir also (Teil1 / Gerät1), (Teil1 / Gerät2), (Teil2 / Gerät3) einfügen, muss die Datenbank (Teil 1 / Gerät3) die Tabelle auseinander brechen und die letzte zwischen den Einträgen 2 und 3 einfügen Bei vielen Datensätzen wird dies sehr problematisch, da bei jedem Hinzufügen Hunderte, Tausende oder Millionen von Datensätzen gemischt werden. Im Gegensatz dazu ermöglicht eine automatisch inkrementierende PK, dass die neuen Datensätze bis zum Ende angeheftet werden.
Der Grund, den ich frage, ist, dass ich immer geneigt war, den zusammengesetzten Primärschlüssel ohne Ersatz-Auto-Inkrement-Spalte zu erstellen, aber ich bin mir nicht sicher, ob der Ersatzschlüssel tatsächlich leistungsfähiger ist.