Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

Problèmes de fragmentation de SQL Server

Les index clusterisés contrôlent l'ordre des données sur le DISK. C'est l'une des principales raisons pour lesquelles il est généralement recommandé de configurer une clé entière toujours croissante pour agir en tant qu'index clusterisé. De cette façon, à mesure que d'autres données sont ajoutées au tableau, elles sont ajoutées à la fin des données actuellement existantes.

S'il ne s'agit pas d'un nombre auto-croissant et que les nouvelles lignes peuvent contenir des valeurs qui seraient ordonnées quelque part entre les valeurs existantes, alors SQL Server poussera essentiellement les données sur le disque auquel elles appartiennent (pour conserver l'ordre des valeurs de clé d'index en cluster), produisant une fragmentation et une surcharge potentiellement importante lorsque les écritures E/S ralentissent davantage la base de données.

Je soupçonne que vous avez le même problème avec vos valeurs UserRecord.

Donc, ce que je ferais, c'est ajouter une clé primaire à augmentation automatique en cluster distincte à chaque table et retravailler vos références et requêtes FK si nécessaire.