SQL - Viele-zu-viele-Tabellen-Primärschlüssel

Diese Frage taucht auf, nachdem Sie einen Kommentar in dieser Frage gelesen haben:

Datenbank Design

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 eine eindeutige Einschränkung)? Was sind die Auswirkungen auf die Leistung für das Einfügen neuer Datensätze / die erneute Indizierung in jedem Fall?

Grundsätzlich ist dies:

PartDevice
----------
PartID (PK/FK)
DeviceID (PK/FK)

gegen diese:

PartDevice
----------
ID (PK/auto-increment)
PartID (FK)
DeviceID (FK)

Der Kommentator sagt:

Wenn Sie die beiden IDs als PK festlegen, bedeutet dies, dass die Tabelle auf der Festplatte physisch in dieser Reihenfolge sortiert ist. Wenn wir also (Teil1 / Gerät1), (Teil1 / Gerät2), (Teil2 / Gerät3) einfügen, muss die Datenbank (Teil 1 / Gerät3) die Tabelle aufteilen 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 sich selbst 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 Ersatzspalte mit automatischer Inkrementierung zu erstellen, aber ich bin mir nicht sicher, ob der Ersatzschlüssel tatsächlich leistungsfähiger ist.

Antworten auf die Frage(5)

Ihre Antwort auf die Frage