Database
 sql >> Datenbank >  >> RDS >> Database

Umbenennen von Indizes mit der sp_rename-Prozedur

Vor nicht allzu langer Zeit arbeitete ich an einem Projekt, bei dem wir den Datentyp einer Tabelle ändern mussten. Die Tabelle hatte Millionen von Zeilen, und wir entschieden uns, eine separate Tabelle mit der vorhandenen Tabellendefinition zu erstellen und die Zeilen in diese Tabelle einzufügen. Nach dem Exportieren von Daten in die neue Tabelle haben wir die alte Tabelle, Einschränkung und Indizes mit sp_rename umbenannt gespeicherte Prozedur.

Der aktuelle Artikel widmet sich den Möglichkeiten zum Umbenennen von Indizes.

Die Grundlagen der gespeicherten Prozedur sp_rename

Wir können den Index mit einer der folgenden Methoden umbenennen:

  1. Mit SQL Server Management Studio.
  2. Verwendung von sp_rename gespeicherte Prozedur.

Lassen Sie uns zunächst die Grundlagen verstehen.

Die sp_rename Die Prozedur wird verwendet, um Tabellen, Tabellenspalten, Indexnamen und benutzerdefinierte Typen der Common Language Runtime umzubenennen.

Die Syntax der Prozedur lautet wie folgt:

Führen Sie sp_rename ‘object_name’, ‘new_name’, ‘object_type’

aus
  1. Objektname gibt den Namen des Objekts an, das Sie umbenennen möchten.
    1. Wenn Sie die Tabelle umbenennen, das Format von object_name Parameter kann [Tabellenname] sein oder [Schemaname].[Tabellenname] .
    2. Wenn Sie den Spaltennamen der Tabelle umbenennen, das Format des Objektnamens Parameter sollte [Tabellenname].[Spaltenname]. sein
    3. Wenn Sie den Indexnamen der Tabelle umbenennen, das Format von object_name Parameter sollte [Schemaname].[Tabellenname].[Indexname] sein . Oder es kann [table_name].[index_name] sein .

Hinweis: Wenn Sie einen qualifizierten Objektnamen verwenden, müssen Sie das Anführungszeichen angeben.

  1. neuer_name gibt den neuen Namen des Objekts an, das der einteilige Bezeichner sein muss.
  2. Objekttyp gibt den Objekttyp an, den Sie umbenennen möchten (ein optionaler Parameter). Der Wert von object_type sollte einer der folgenden sein:
    1. SPALTE
    2. DATENBANK
    3. INDEX
    4. OBJEKT
    5. STATISTIKEN

Demo-Setup

Zu unseren Erklärungs- und Testzwecken habe ich ein Demo-Setup vorbereitet. Da ist die Datenbank namens StudentDB , wo ich eine Tabelle namens tblStudent erstellt habe .

Die Abfrage zum Erstellen der Datenbank:

Create database [StudentDB]

Die Abfrage zum Erstellen der Tabelle:

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))

Ich habe auch den Index namens INDX_tblStudents_Std_Code erstellt auf dem tblStudent Tabelle:

USE [StudentDB]
GO
CREATE NONCLUSTERED INDEX [INDX_tblStudents_Std_Code] ON [dbo].[tblStudents]
([student_code] ASC)

Die folgende Abfrage fügt die Daten in die Tabelle ein:

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)

Lassen Sie uns nun sehen, wie wir PK_tblStudent umbenennen Index mit SQL Server Management Studio.

Indizes mit SSMS umbenennen

Lassen Sie uns zuerst PK_tblStudent umbenennen index.

  1. Starten Sie SQL Server Management Studio und stellen Sie eine Verbindung zur Datenbank-Engine her.
  2. Erweitern Sie die StudentDB Datenbank> Tabellen > tblStudents > Indizes
  3. Klicken Sie mit der rechten Maustaste auf PK_tblStudent index> wählen Sie Umbenennen aus dem Menü oder klicken Sie einmal auf den Indexnamen.

Der Index wird bearbeitbar. Geben Sie den neuen Namen des Indexes an und drücken Sie Enter .

Vor dem Ändern des Indexnamens zeigt SSMS die folgende Warnung an. Klicken Sie auf Ja .

Der Indexname wurde geändert und die Änderungen werden sofort übernommen.

Wenn der Indexname nicht aktualisiert wird, aktualisieren Sie die Indizes Ordner:

Führen Sie die folgende Abfrage aus, um zu überprüfen, ob der Index umbenannt wurde:

select object_name(object_id) [table name],name [Index Name], type_desc [Index Type] from sys.indexes where object_id=object_id('tblStudents')

Die Ausgabe :

Wie Sie sehen können, wurde der Indexname geändert, und SSMS hat sich für diesen Zweck als effizient erwiesen.

Lassen Sie uns nun verstehen, wie wir den Index mit sp_rename umbenennen können gespeicherte Prozedur.

Indizes mit der gespeicherten Prozedur sp_rename umbenennen

Wir werden den Index in INDX_tblStudents_Std_Code umbenennen zu INDX_tblStudents_Student_Code .

Unser sp_rename Stored Procedure funktioniert im folgenden Code:

exec sp_rename 'dbo.tblStudents.INDX_tblStudents_Std_Code','INDX_tblStudents_Student_Code'

Führen Sie die Abfrage aus, um die Indexumbenennung zu überprüfen:

select object_name(object_id) [table name],name [Index Name], type_desc [Index Type] from sys.indexes where object_id=object_id('tblStudents')

Die Ausgabe:

Wichtige Hinweise

Sicherheit und Erlaubnis

Um den Index umzubenennen, müssen Sie ALTER haben Berechtigung für den Index.

Änderungen der Statistik

Wenn wir den Index umbenennen, werden die dem Index zugeordneten Statistiken automatisch umbenannt. Sehen wir uns die mit dem Primärschlüssel verknüpften Statistiken an.

Öffnen Sie SQL Server Management Studio> Erweitern Sie die erforderliche Datenbank> tblStudents-Tabelle> Statistiken

Wie Sie sehen, wurde die Statistik umbenannt.

Änderungen des Abfrageausführungsplans

Wenn wir den Index umbenennen, werden die Metadaten des Abfrageausführungsplans zu automatisch geändert. Lassen Sie uns zur Verdeutlichung den Ausführungsplan der Abfrage mit PK_tblStudent überprüfen index.

Führen Sie die folgende SELECT-Anweisung aus:

Select * from [tblStudents] where ID=’5’

Die Ausgabe:

Der Indexname wird im Ausführungsplan geändert.

Zusammenfassung

Daher haben wir von sp_rename erfahren Syntax und Verwendung gespeicherter Prozeduren. Darüber hinaus haben wir zwei Möglichkeiten zum Umbenennen von Indizes in der Tabelle identifiziert und ausprobiert. Jetzt können wir dies sowohl mit SSMS als auch mit der dedizierten gespeicherten Prozedur tun. Wir haben auch die Auswirkungen der Änderung der Indexnamen auf die Statistiken und Abfrageausführungspläne verdeutlicht. Darüber hinaus können mit Hilfe von dbForge Index Manager Probleme mit der Indexfragmentierung gefunden und behoben werden. Ich hoffe, dass dieser Artikel mit seinen praktischen Tipps hilfreich für Ihre Arbeit ist.

Verwandte Artikel

Verschiedene Möglichkeiten zum Umbenennen von SQL Server-Tabellen