Database
 sql >> Baza danych >  >> RDS >> Database

Zmiana nazw indeksów za pomocą procedury sp_rename

Nie tak dawno pracowałem nad projektem, w którym musieliśmy zmienić typ danych tabeli. Tabela miała miliony wierszy i postanowiliśmy utworzyć osobną tabelę przy użyciu istniejącej definicji tabeli i wstawić wiersze do tej tabeli. Po wyeksportowaniu danych do nowej tabeli zmieniliśmy nazwę starej tabeli, ograniczenia i indeksów za pomocą sp_rename procedura składowana.

Niniejszy artykuł poświęcony jest sposobom zmiany nazw indeksów.

Podstawy procedury składowanej sp_rename

Możemy zmienić nazwę indeksu za pomocą jednej z następujących metod:

  1. Korzystanie z SQL Server Management Studio.
  2. Korzystanie z sp_rename procedura składowana.

Najpierw zapoznajmy się z podstawami.

sp_rename Procedura jest używana do zmiany nazw tabel, kolumn tabel, nazw indeksów i typów zdefiniowanych przez użytkownika w czasie wykonywania wspólnego języka.

Składnia procedury jest następująca:

Exec sp_rename „nazwa_obiektu”, „nowa_nazwa”, „typ_obiektu”

  1. nazwa_obiektu określa nazwę obiektu, którego nazwę chcesz zmienić.
    1. Jeśli zmieniasz nazwę tabeli, format nazwa_obiektu parametrem może być [nazwa_tabeli] lub [nazwa_schematu].[nazwa_tabeli] .
    2. Jeśli zmieniasz nazwę kolumny tabeli, format object_name parametr powinien mieć wartość [nazwa_tabeli].[nazwa_kolumny].
    3. Jeśli zmieniasz nazwę indeksu tabeli, format nazwa_obiektu parametr powinien mieć postać [nazwa_schematu].[nazwa_tabeli].[nazwa_indeksu] . Lub może to być [nazwa_tabeli].[nazwa_indeksu] .

Uwaga: Jeśli używasz kwalifikowanej nazwy obiektu, musisz podać znak cudzysłowu.

  1. nowa_nazwa określa nową nazwę obiektu, która musi być jednoczęściowym identyfikatorem.
  2. typ_obiektu określa typ obiektu, którego nazwę chcesz zmienić (parametr opcjonalny). Wartość object_type powinien być jednym z następujących:
    1. KOLUMNA
    2. BAZA DANYCH
    3. INDEKS
    4. OBIEKT
    5. STATYSTYKI

Konfiguracja demonstracyjna

Dla naszych wyjaśnień i celów testowych przygotowałem konfigurację demonstracyjną. Istnieje baza danych o nazwie StudentDB , gdzie utworzyłem tabelę o nazwie tblStudent .

Zapytanie do utworzenia bazy danych:

Create database [StudentDB]

Zapytanie do utworzenia tabeli:

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

Utworzyłem również indeks o nazwie INDX_tblStudents_Std_Code na tabeli Student tabela:

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

Następujące zapytanie wstawia dane do tabeli:

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)

Zobaczmy teraz, jak zmienimy nazwę PK_tblStudent indeksuj za pomocą SQL Server Management Studio.

Zmień nazwy indeksów za pomocą SSMS

Najpierw zmieńmy nazwę PK_tblStudent indeks.

  1. Uruchom SQL Server Management Studio i połącz się z silnikiem bazy danych.
  2. Rozwiń StudentDB baza danych> Tabele > tblStudenci > Indeksy
  3. Kliknij prawym przyciskiem myszy PK_tblStudent indeks> wybierz Zmień nazwę z menu lub kliknij raz nazwę indeksu.

Indeks staje się edytowalny. Podaj nową nazwę indeksu i naciśnij Enter .

Przed zmianą nazwy indeksu SSMS wyświetli następujące ostrzeżenie. Kliknij Tak .

Nazwa indeksu została zmieniona, a zmiany zostaną zastosowane natychmiast.

Jeśli nazwa indeksu nie została zaktualizowana, odśwież Indeksy folder:

Uruchom następujące zapytanie, aby sprawdzić, czy nazwa indeksu została zmieniona:

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

Wynik :

Jak widać, nazwa indeksu została zmieniona, a SSMS okazał się skuteczny w tym celu.

Teraz zrozumiemy, jak możemy zmienić nazwę indeksu za pomocą sp_rename procedura składowana.

Zmień nazwy indeksów za pomocą procedury składowanej sp_rename

Zamierzamy zmienić nazwę indeksu na INDX_tblStudents_Std_Code do INDX_tblStudents_Student_Code .

Nasza sp_rename procedura składowana będzie działać w następującym kodzie:

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

Uruchom zapytanie, aby zweryfikować zmianę nazwy indeksu:

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

Wynik:

Ważne uwagi

Bezpieczeństwo i uprawnienia

Aby zmienić nazwę indeksu, musisz mieć ALTER pozwolenie na indeks.

Jak zmieniają się statystyki

Kiedy zmieniamy nazwę indeksu, statystyki związane z indeksem są automatycznie zmieniane. Zobaczmy statystyki związane z kluczem podstawowym.

Otwórz SQL Server Management Studio> rozwiń niezbędną bazę danych> tabela tblStudents> Statystyki

Jak widać, nazwy statystyk zostały zmienione.

Jak zmienia się plan wykonania zapytania

Gdy zmieniamy nazwę indeksu, metadane planu wykonania zapytania zmieniają się zbyt automatycznie. Aby było to jaśniejsze, przejrzyjmy plan wykonania zapytania za pomocą PK_tblStudent indeks.

Uruchom następującą instrukcję SELECT:

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

Wynik:

Nazwa indeksu została zmieniona w planie wykonania.

Podsumowanie

Dlatego dowiedzieliśmy się o sp_rename składnia i użycie procedury składowanej. Ponadto zidentyfikowaliśmy i wypróbowaliśmy dwa sposoby zmiany nazw indeksów w tabeli. Teraz możemy to zrobić zarówno za pomocą SSMS, jak i dedykowanej procedury składowanej. Wyjaśniliśmy również wpływ zmiany nazw indeksów na statystyki i plany wykonywania zapytań. Co więcej, znalezienie i naprawę problemów z fragmentacją indeksów można osiągnąć za pomocą dbForge Index Manager. Mam nadzieję, że ten artykuł z praktycznymi wskazówkami okaże się pomocny w Twojej pracy.

Powiązane artykuły

Różne sposoby zmiany nazwy tabel SQL Server


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Poprawa rozwiązania mediany górnej/górnej opadającej

  2. 7 kluczowych rzeczy do zapamiętania o globalizacji modelu danych

  3. Typ danych SQL VARCHAR Zalecenia i zakazy dla szybszych baz danych

  4. Zawsze włączone grupy dostępności SQL:obiekty komputerowe

  5. T-SQL Wtorek #65:Naucz czegoś nowego