In unserer Umgebung befindet sich eine Tabelle. Kürzlich wurde festgestellt, dass die Performance durch die Sortierung von datetime, die die dba zum Primärschlüssel machen wollte, stark verbessert wurde. Da er mit der Datetime keine Eindeutigkeit garantieren kann, fügte er die ID, die einmal der Primärschlüssel war, in seinen neuen zusammengesetzten Schlüssel ein.Primärschlüssel als Komposit nur für Primärtabelle
Also gibt es eine Tabelle mit dem Primärschlüssel als datetime/id und auch der Clustered Index ist auf diese Weise definiert. Alle pk/fk-Beziehungen sind immer noch richtig eingerichtet und existieren auf dem ID-zu-ID-Paradigma, das man erwarten würde.
Was könnte das mögliche Problem eines einseitigen Primärschlüssels sein?
Und die Leistung wird mit dieser Änderung erheblich verbessert.
In dem Schema ist der eigentliche "Primärschlüssel" jedoch zwei Spalten. was könnte möglicherweise falsch laufen?
Mögliche Duplikate von [Warum mehrere Spalten als Primärschlüssel (zusammengesetzter Primärschlüssel) verwenden] (http://stackoverflow.com/questions/2626158/why-use-multiple-columns-as-primary-keys-composite-primary -Schlüssel) – Whencesoever
Das hat also die bestehenden FK-Beziehungen nicht gebrochen. Warum hat er nicht einfach einen nicht gruppierten Index auf die Datetime gesetzt? – Paparazzi
Behalten Sie die vorhandene eindeutige Spalte als Primärschlüssel bei. Erstellen Sie dann einen neuen INDEX in der Datetime-Spalte. Sie erwähnen nicht Datenbank-Plattform, aber wenn dies Sql Server 2008 (* ich glaube *) oder später Sie können dann wählen Sie INCLUDE-Spalten, die mit den indizierten Spalten beibehalten werden. Dies sollte Ihnen immer noch nahe an der Geschwindigkeit sein, mit der das Datum in den Clustered-Index aufgenommen werden soll. Wenn Sie weitere Optionen wünschen, sollten Sie die Datenbankplattform und -version einbeziehen. – Igor