Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

SQL Server-Fragmentierungsprobleme

Clustered-Indizes steuern die Reihenfolge der Daten auf der DISK. Dies ist einer der Hauptgründe, warum es normalerweise empfohlen wird, einen immer größer werdenden Integer-Schlüssel einzurichten, der als gruppierter Index fungiert. Auf diese Weise werden weitere Daten, die der Tabelle hinzugefügt werden, am Ende der derzeit vorhandenen Daten hinzugefügt.

Wenn es sich nicht um eine automatisch ansteigende Zahl handelt und neue Zeilen Werte enthalten können, die irgendwo zwischen vorhandenen Werten angeordnet wären, dann schiebt SQL Server die Daten grundsätzlich auf die Festplatte, wo sie hingehören (um die Reihenfolge der Schlüsselwerte des gruppierten Index beizubehalten), was zu einer Fragmentierung führt und potenziell schwerwiegender Overhead, da IO-Schreibvorgänge die Datenbank weiter verlangsamen.

Ich vermute, Sie haben das gleiche Problem mit Ihren UserRecord-Werten.

Was ich also tun würde, ist, jeder Tabelle einen separaten gruppierten Primärschlüssel mit automatischer Erhöhung hinzuzufügen und Ihre FK-Referenzen und -Abfragen bei Bedarf zu überarbeiten.