sql >> Database >  >> RDS >> Sqlserver

Problemen met SQL Server-fragmentatie

Geclusterde indexen bepalen de volgorde van de gegevens op de SCHIJF. Dit is een van de belangrijkste redenen waarom het gewoonlijk wordt aanbevolen dat u een altijd toenemende integer-sleutel instelt om als de geclusterde index te fungeren. Op deze manier worden naarmate er meer gegevens aan de tabel worden toegevoegd, deze aan het einde van de momenteel bestaande gegevens toegevoegd.

Als het geen automatisch toenemend getal is en nieuwe rijen waarden kunnen bevatten die ergens tussen de bestaande waarden zouden worden gerangschikt, dan zal SQL Server de gegevens in feite naar de schijf pushen waar ze thuishoren (om de volgorde van de geclusterde indexsleutelwaarden te behouden), waardoor fragmentatie ontstaat en mogelijk ernstige overhead als IO schrijft, waardoor de database verder wordt vertraagd.

Ik vermoed dat je hetzelfde probleem hebt met je UserRecord-waarden.

Dus wat ik zou doen, is een aparte geclusterde primaire sleutel voor automatisch verhogen toevoegen aan elke tabel en je FK-referenties en -query's waar nodig herwerken.




  1. Bereken werkdagen in Oracle SQL (geen functies of procedure)

  2. Inzicht in SQL Server Always Encrypted

  3. SQL-query om alleen gegevens te retourneren als ALLE noodzakelijke kolommen aanwezig zijn en niet NULL

  4. Een tekenreeks met enkele aanhalingstekens opslaan in een tekstkolom in PostgreSQL