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.