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

Problemi di frammentazione di SQL Server

Gli indici raggruppati controllano l'ordine dei dati sul DISK. Questo è uno dei motivi principali per cui in genere è consigliabile impostare una chiave intera sempre crescente che funga da indice cluster. In questo modo, man mano che vengono aggiunti più dati alla tabella, questi vengono aggiunti alla fine dei dati attualmente esistenti.

Se non è un numero che aumenta automaticamente e le nuove righe possono contenere valori che verrebbero ordinati da qualche parte tra i valori esistenti, SQL Server fondamentalmente inserirà i dati sul disco a cui appartengono (per mantenere l'ordine dei valori della chiave dell'indice cluster), producendo la frammentazione e un sovraccarico potenzialmente grave quando IO scrive, rallentando ulteriormente il database.

Sospetto che tu abbia lo stesso problema con i valori di UserRecord.

Quindi quello che farei è aggiungere una chiave primaria a incremento automatico in cluster separata a ciascuna tabella e rielaborare i riferimenti e le query FK ove necessario.