sql >> Database teknologi >  >> RDS >> Sqlserver

SQL Server Fragmenteringsproblemer

Klyngede indekser styrer rækkefølgen af ​​dataene på DISK'en. Dette er en af ​​hovedårsagerne til, at det normalt anbefales, at du opsætter en altid stigende heltalsnøgle til at fungere som det klyngede indeks. På denne måde, efterhånden som flere data føjes til tabellen, føjes de til slutningen af ​​de aktuelt eksisterende data.

Hvis det ikke er et autoforøgende tal, og nye rækker kan indeholde værdier, der ville blive ordnet et sted mellem eksisterende værdier, så vil SQL Server dybest set skubbe dataene ind på den disk, hvor de hører hjemme (for at bevare rækkefølgen af ​​de klyngede indeksnøgleværdier), hvilket producerer fragmentering og potentielt alvorlige overhead, da IO skriver yderligere bremser databasen.

Jeg formoder, at du har det samme problem med dine UserRecord-værdier.

Så hvad jeg ville gøre, er at tilføje en separat klynget autoforøgende primærnøgle til hver tabel og omarbejde dine FK-referencer og -forespørgsler, hvor det er nødvendigt.




  1. Android SQLite-fejl:Variabelnummer skal være mellem ?1 og ?999

  2. Entity Framework Kerneantal har ikke optimal ydeevne

  3. SQL, der deler 2 værdier fra 2 forespørgsler

  4. MYSQL Vælg MAX Date i en sammenslutningserklæring