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

Changer une clé primaire de non clusterisé à clusterisé

1) Supprimez d'abord l'index cluster existant (IX_TableX_FieldB) :

   DROP INDEX TableX.IX_TableX_FieldB

2) Créer une contrainte UNIQUE (temporaire) sur les champs uniques référencés dans la clé primaire

    ALTER TABLE TableX
    ADD CONSTRAINT UQ_TableX UNIQUE(FieldA)

3) Déposez la CLÉ PRIMAIRE

    ALTER TABLE TableX
    DROP CONSTRAINT PK_TableX

4) Recréez la CLÉ PRIMAIRE en CLUSTERED

   ALTER TABLE TableX
   ADD CONSTRAINT PK_TableX PRIMARY KEY CLUSTERED(FieldA)

5) Supprimez la contrainte UNIQUE temporaire

   ALTER TABLE TableX
   DROP CONSTRAINT UQ_TableX

6) Ajoutez le IX_TableX_FieldB en tant que NON CLUSTÉRÉ

   CREATE NONCLUSTERED INDEX IX_TableX_FieldB ON TableX(FieldB)