bonjour, j'ai un petit problème que je compte résoudre par une solution que je souhaite soumettre à vos avis éclairés:
Nous avons une base de données dont environ 80% des tables ont pour clé primaire un UNIQUEIDENTIFIER sur lequel est défini l'index clustered.
Ces clés sont générées de façon non séquentielle par une application. Pourquoi? parce que cela permet aux développeurs de pouvoir insérer les clés étrangères sans avoir à faire de SELECT pour les récupérer puisqu'elles sont générées avant insertion dans la base.
C'est pratique, mais provoque une fragmentation importante, à cause du fait que l'index clustered est sur ces colonnes. C'est un problème dont nous n'avions pas conscience à l'époque.
Pour résoudre ce problème, sans modification de l'application, je pensais à la solution suivante, et j'aimerais avoir votre avis:
- Ajouter dans mes tables un champ de type INT IDENTITY
- Placer l'index clustered sur ce champ,
- conserver la clé primaire sur le champ UNIQUEIDENTIFIER mais en changeant l'index Clustered en nonclustered.
J'attends vos avis avec impatience.![]()
Partager