sql >> Databasteknik >  >> RDS >> Sqlserver

SQL Server-fragmenteringsproblem

Klustrade index styr ordningen för data på DISK:n. Detta är en av huvudorsakerna till att det vanligtvis rekommenderas att du ställer in en alltid ökande heltalsnyckel för att fungera som det klustrade indexet. På detta sätt läggs mer data till i tabellen i slutet av befintliga data.

Om det inte är ett automatiskt ökande antal och nya rader kan innehålla värden som skulle ordnas någonstans mellan befintliga värden, så kommer SQL Server i princip att skjuta data till disken där den hör hemma (för att behålla ordningen på de klustrade indexnyckelvärdena), vilket skapar fragmentering och potentiellt allvarliga overhead när IO skriver saktar ner databasen ytterligare.

Jag misstänker att du har samma problem med dina UserRecord-värden.

Så vad jag skulle göra är att lägga till en separat klustrad autoökande primärnyckel till varje tabell och omarbeta dina FK-referenser och frågor vid behov.




  1. pg_stat_activity - hur man ser aktuell aktivitet i en pågående lagrad procedur

  2. Hur reparerar man en serialiserad sträng som har skadats av en felaktig byte-räknelängd?

  3. Oracle:sekvens MySequence.currval är ännu inte definierad i denna session

  4. MySQL multidimensionell? Dynamisk pivot