Probleme mit der SQL Server-Fragmentierung

Ich habe ein paar Tabellen (User & UserRecord) in meiner Datenbank, die extrem fragmentiert werden (wie 99%) und dazu führen, dass die gesamte Datenbank und damit die Website zum Stillstand kommt.

UserRecord ist eine Art Momentaufnahme dieses Benutzers zu einem bestimmten Zeitpunkt. Benutzer ist wie der Stammsatz für diesen Benutzer. Benutzer hat 0 bis viele UserRecords. Benutzer hat ungefähr eine Million Zeilen, UserRecord hat ungefähr 2,5 Millionen Zeilen. Diese Tabellen werden viel geschrieben. Sie werden auch viel durchsucht. Sie werden beide viel größer werden. Die Hauptindizes, die stark fragmentiert werden, sind die Primärschlüssel der Tabellen User und UserRecord.

Die Datenbank ist SQL Server 2012 und ich verwende Entity Framework und verwende keine gespeicherten Prozeduren.

Tabellen sehen ungefähr so ​​aus:

USER
UserName string PK ClusteredIndex
FirstName string
LastName string
+SeveralMoreRows

USER_RECORD
UserRecordId int PK ClusteredIndex
ListId int FK(List)
UserName string FK(User) NonClusteredIndex
Community string NonClusteredIndex
DateCreated datetime
+LotsMoreRows

LIST 
ListId int PK & ClusteredIndex
Name string
DateCreated datetime

(nicht sicher, ob List dies wichtig ist oder nicht, aber ich dachte, ich würde es einschließen, da es mit User_Record zusammenhängt. List hat 0 bis viele UserRecords)

Wir haben einen SQL-Wartungsplan festgelegt, um die Indizes täglich neu zu erstellen, was zwar hilfreich ist, aber manchmal nicht ausreicht.

Ein Freund hat vorgeschlagen, zwei Datenbanken zu verwenden, eine zum Lesen und eine zum Schreiben, und die gelesene DB mit der schreibenden DB zu synchronisieren. Nicht, dass ich etwas darüber weiß, aber das erste Problem, das ich bei dieser Lösung sehe, ist, dass wir beim Anzeigen der Site aktuelle Daten benötigen. Wenn wir beispielsweise Benutzerdetails oder einen Benutzerdatensatz aktualisieren, möchten wir diese Änderungen sofort sehen.

Hat jemand Vorschläge, wie ich dieses Problem beheben kann, bevor es außer Kontrolle gerät?

Antworten auf die Frage(1)

Ihre Antwort auf die Frage