sql >> Database >  >> RDS >> Database

Indexen hernoemen met sp_rename Procedure

Nog niet zo lang geleden werkte ik aan een project waarbij we het gegevenstype van een tabel moesten wijzigen. De tabel had miljoenen rijen en we besloten een aparte tabel te maken met behulp van de bestaande tabeldefinitie en de rijen in die tabel in te voegen. Nadat we gegevens naar de nieuwe tabel hadden geëxporteerd, hebben we de oude tabel, beperking en indexen hernoemd met de sp_rename opgeslagen procedure.

Het huidige artikel is gewijd aan de manieren om indexen te hernoemen.

De basis van de sp_rename opgeslagen procedure

We kunnen de index hernoemen met een van de volgende methoden:

  1. SQL Server Management Studio gebruiken.
  2. De sp_rename gebruiken opgeslagen procedure.

Laten we eerst de basis begrijpen.

De sp_rename procedure wordt gebruikt voor het hernoemen van tabellen, tabelkolommen, indexnamen en door de gebruiker gedefinieerde typen in runtime in een veelgebruikte taal.

De syntaxis van de procedure is als volgt:

Exec sp_rename 'object_name', 'new_name', 'object_type'

  1. object_name specificeert de naam van het object waarvan u de naam wilt wijzigen.
    1. Als je de tabel een andere naam geeft, het formaat van de object_name parameter kan [tabelnaam] . zijn of [schema_name].[table_name] .
    2. Als u de naam van de kolom van de tabel hernoemt, het formaat van de object_name parameter moet [tabelnaam].[kolomnaam]. . zijn
    3. Als u de indexnaam van de tabel hernoemt, het formaat van de object_name parameter moet zijn [schema_name].[table_name].[index_name] . Of het kan [table_name].[index_name] . zijn .

Opmerking: Als u een gekwalificeerde objectnaam gebruikt, moet u het aanhalingsteken opgeven.

  1. nieuwe_naam specificeert de nieuwe naam van het object dat de eendelige identifier moet zijn.
  2. object_type specificeert het type object dat u wilt hernoemen (een optionele parameter). De waarde van het object_type moet een van de volgende zijn:
    1. KOLOM
    2. DATABASE
    3. INDEX
    4. OBJECT
    5. STATISTIEKEN

Demo instellen

Voor onze uitleg en testdoeleinden heb ik een demo-opstelling opgesteld. Er is de database met de naam StudentDB , waar ik een tabel heb gemaakt met de naam tblStudent .

De vraag om de database aan te maken:

Create database [StudentDB]

De vraag om de tabel te maken:

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

Ik heb ook de index gemaakt met de naam INDX_tblStudents_Std_Code op de tblStudent tafel:

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

De volgende query voegt de gegevens in de tabel in:

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)

Laten we nu eens kijken hoe we de naam van de PK_tblStudent index met behulp van SQL Server Management Studio.

De naam van indexen wijzigen met SSMS

Laten we eerst de naam van de PK_tblStudent . wijzigen index.

  1. Start SQL Server Management Studio en maak verbinding met de database-engine.
  2. Breid de StudentDB uit database> Tabellen > tblStudenten > Indexen
  3. Klik met de rechtermuisknop op de PK_tblStudent index> selecteer Naam wijzigen uit het menu, of klik één keer op de indexnaam.

De index wordt bewerkbaar. Geef de nieuwe naam van de index op en druk op Enter .

Voordat de indexnaam wordt gewijzigd, toont SSMS de volgende waarschuwing. Klik op Ja .

De indexnaam is gewijzigd en de wijzigingen worden onmiddellijk toegepast.

Als de indexnaam niet is bijgewerkt, vernieuw dan de Indexen map:

Voer de volgende query uit om te controleren of de index is hernoemd:

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

De uitvoer :

Zoals u kunt zien, is de indexnaam gewijzigd en SSMS is hiervoor efficiënt gebleken.

Laten we nu eens kijken hoe we de index kunnen hernoemen met de sp_rename opgeslagen procedure.

Hernoem indexen met behulp van de sp_rename opgeslagen procedure

We gaan de index hernoemen met de naam INDX_tblStudents_Std_Code naar INDX_tblStudents_Student_Code .

Onze sp_rename opgeslagen procedure werkt in de volgende code:

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

Voer de query uit om de hernoeming van de index te verifiëren:

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

De uitvoer:

Belangrijke opmerkingen

Beveiliging en toestemming

Om de index te hernoemen, moet u ALTER . hebben toestemming op de index.

Hoe statistieken veranderen

Wanneer we de index hernoemen, worden de statistieken die aan de index zijn gekoppeld automatisch hernoemd. Laten we de statistieken bekijken die aan de primaire sleutel zijn gekoppeld.

Open SQL Server Management Studio> Vouw de benodigde database uit> tblStudents-tabel> Statistieken

Zoals je kunt zien, zijn de statistieken hernoemd.

Hoe het uitvoeringsplan voor query's verandert

Wanneer we de index hernoemen, worden de metadata van het query-uitvoeringsplan ook automatisch gewijzigd. Laten we, om het duidelijker te maken, het uitvoeringsplan van de query bekijken met behulp van de PK_tblStudent index.

Voer de volgende SELECT-instructie uit:

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

De uitvoer:

De indexnaam is gewijzigd in het uitvoeringsplan.

Samenvatting

Daarom hebben we geleerd over de sp_rename opgeslagen procedure syntaxis en gebruik. Bovendien hebben we twee manieren geïdentificeerd en geprobeerd om indexen op de tafel te hernoemen. Nu kunnen we het zowel met SSMS als met de speciale opgeslagen procedure doen. We hebben ook de gevolgen verduidelijkt van het wijzigen van de namen van de indexen op de statistieken en plannen voor het uitvoeren van query's. Bovendien kunnen problemen met indexfragmentatie worden gevonden en opgelost met behulp van dbForge Index Manager. Ik hoop dat dit artikel met zijn praktische tips nuttig zal zijn voor uw werk.

Gerelateerde artikelen

Verschillende manieren om de naam van SQL Server-tabellen te wijzigen


  1. NOT NULL beperking over een set kolommen

  2. EXP() Functie in Oracle

  3. SQL Server 2008-pagingmethoden?

  4. Wanneer is het tijd om te upgraden naar SQL?