Il n'y a pas si longtemps, je travaillais sur un projet où nous devions changer le type de données d'une table. La table comportait des millions de lignes et nous avons décidé de créer une table distincte à l'aide de la définition de table existante et d'insérer les lignes dans cette table. Après avoir exporté les données dans la nouvelle table, nous avons renommé l'ancienne table, la contrainte et les index à l'aide de sp_rename procédure stockée.
Le présent article est consacré aux manières de renommer les index.
Les bases de la procédure stockée sp_rename
Nous pouvons renommer l'index avec l'une des méthodes suivantes :
- Utilisation de SQL Server Management Studio.
- Utiliser sp_rename procédure stockée.
Tout d'abord, laissez-nous comprendre les bases.
Le sp_rename est utilisée pour renommer les tables, les colonnes de table, les noms d'index et les types définis par l'utilisateur du Common Language Runtime.
La syntaxe de la procédure est la suivante :
Exec sp_rename 'nom_objet', 'nouveau_nom', 'type_objet'
- nom_objet spécifie le nom de l'objet que vous souhaitez renommer.
- Si vous renommez la table, le format de object_name le paramètre peut être [table_name] ou [schema_name].[table_name] .
- Si vous renommez le nom de colonne de la table, le format de object_name le paramètre doit être [table_name].[column_name].
- Si vous renommez le nom d'index de la table, le format de object_name le paramètre doit être [schema_name].[table_name].[index_name] . Ou cela peut être [table_name].[index_name] .
Remarque : Si vous utilisez un nom d'objet qualifié, vous devez spécifier le guillemet.
- nouveau_nom spécifie le nouveau nom de l'objet qui doit être l'identifiant en une partie.
- object_type spécifie le type d'objet que vous souhaitez renommer (un paramètre facultatif). La valeur de object_type devrait être l'un des suivants :
- COLONNE
- BASE DE DONNÉES
- INDICE
- OBJET
- STATISTIQUES
Configuration de la démo
À des fins d'explication et de test, j'ai préparé une configuration de démonstration. Il y a la base de données nommée StudentDB , où j'ai créé une table nommée tblStudent .
La requête pour créer la base de données :
Create database [StudentDB]
La requête pour créer la table :
USE [StudentDB]
GO
CREATE TABLE [dbo].[tblStudents](
[ID] [int] IDENTITY(1,1) NOT NULL,
[student_name] [varchar](250) NOT NULL,
[student_code] [varchar](5) NOT NULL,
[student_grade] [char](2) NOT NULL,
[SchoolID] [int] NOT NULL,
CONSTRAINT [PK_tblStudent] PRIMARY KEY CLUSTERED([ID] ASC))
J'ai également créé l'index nommé INDX_tblStudents_Std_Code sur le tblStudent tableau :
USE [StudentDB]
GO
CREATE NONCLUSTERED INDEX [INDX_tblStudents_Std_Code] ON [dbo].[tblStudents]
([student_code] ASC)
La requête suivante insère les données dans la table :
insert into [tblStudents]
(student_name,student_code,student_grade,SchoolID)
values
('Nisarg Upadhyay','ST001','A',1),
('Dixit Upadhyay','ST003','A',1),
('Bharti Upadhyay','ST004','C',2),
('Nimesh Patel','ST005','C',2),
('Raghav Dave','ST006','A',1)
Voyons maintenant comment nous renommons le PK_tblStudent index à l'aide de SQL Server Management Studio.
Renommer les index à l'aide de SSMS
Tout d'abord, renommons le PK_tblStudent indice.
- Lancez SQL Server Management Studio et connectez-vous au moteur de base de données.
- Développez StudentDB base de données > Tableaux > tblÉtudiants > Index
- Cliquez avec le bouton droit sur PK_tblStudent index> sélectionnez Renommer dans le menu ou cliquez une fois sur le nom de l'index.
L'index devient modifiable. Spécifiez le nouveau nom de l'index et appuyez sur Entrée .
Avant de modifier le nom de l'index, SSMS affichera l'avertissement suivant. Cliquez sur Oui .
Le nom de l'index a été modifié et les modifications sont appliquées immédiatement.
Si le nom de l'index n'est pas mis à jour, actualisez les index dossier :
Exécutez la requête suivante pour vérifier que l'index a été renommé :
select object_name(object_id) [table name],name [Index Name], type_desc [Index Type] from sys.indexes where object_id=object_id('tblStudents')
La sortie :
Comme vous pouvez le constater, le nom de l'index a été modifié et SSMS s'est avéré efficace à cette fin.
Maintenant, comprenons comment nous pouvons renommer l'index en utilisant le sp_rename procédure stockée.
Renommer les index à l'aide de la procédure stockée sp_rename
Nous allons renommer l'index nommé INDX_tblStudents_Std_Code à INDX_tblStudents_Student_Code .
Notre sp_rename procédure stockée fonctionnera dans le code suivant :
exec sp_rename 'dbo.tblStudents.INDX_tblStudents_Std_Code','INDX_tblStudents_Student_Code'
Exécutez la requête pour vérifier le changement de nom de l'index :
select object_name(object_id) [table name],name [Index Name], type_desc [Index Type] from sys.indexes where object_id=object_id('tblStudents')
Le résultat :
Remarques importantes
Sécurité et autorisation
Pour renommer l'index, vous devez avoir ALTER autorisation sur l'index.
Comment les statistiques changent
Lorsque nous renommons l'index, les statistiques associées à l'index sont renommées automatiquement. Voyons les statistiques associées à la clé primaire.
Ouvrez SQL Server Management Studio> Développez la base de données nécessaire> table tblStudents> Statistiques
Comme vous pouvez le voir, les statistiques ont été renommées.
Modification du plan d'exécution de la requête
Lorsque nous renommons l'index, les métadonnées du plan d'exécution de la requête sont également modifiées automatiquement. Pour que ce soit plus clair, passons en revue le plan d'exécution de la requête en utilisant le PK_tblStudent indice.
Exécutez l'instruction SELECT suivante :
Select * from [tblStudents] where ID=’5’
Le résultat :
Le nom de l'index est modifié dans le plan d'exécution.
Résumé
Par conséquent, nous avons découvert le sp_rename syntaxe et utilisation des procédures stockées. De plus, nous avons identifié et essayé deux façons de renommer les index sur la table. Maintenant, nous pouvons le faire à la fois avec SSMS ou avec la procédure stockée dédiée. Nous avons également clarifié les impacts de la modification des noms d'index sur les statistiques et les plans d'exécution des requêtes. De plus, la recherche et la résolution des problèmes de fragmentation d'index peuvent être accomplies à l'aide de dbForge Index Manager. J'espère que cet article avec ses conseils pratiques vous sera utile dans votre travail.
Articles connexes
Différentes façons de renommer les tables SQL Server