Database
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Database

Đổi tên các chỉ mục bằng thủ tục sp_rename

Cách đây không lâu, tôi đang thực hiện một dự án mà chúng tôi cần thay đổi kiểu dữ liệu của một bảng. Bảng có hàng triệu hàng và chúng tôi quyết định tạo một bảng riêng biệt bằng cách sử dụng định nghĩa bảng hiện có và chèn các hàng vào bảng đó. Sau khi xuất dữ liệu sang bảng mới, chúng tôi đã đổi tên bảng, ràng buộc và chỉ mục cũ bằng cách sử dụng sp_rename thủ tục được lưu trữ.

Bài viết hiện tại dành riêng cho các cách đổi tên các chỉ mục.

Khái niệm cơ bản về thủ tục lưu trữ sp_rename

Chúng ta có thể đổi tên chỉ mục bằng một trong các phương pháp sau:

  1. Sử dụng SQL Server Management Studio.
  2. Sử dụng sp_rename thủ tục được lưu trữ.

Trước tiên, hãy để chúng tôi hiểu những điều cơ bản.

sp_rename thủ tục được sử dụng để đổi tên bảng, cột bảng, tên chỉ mục và các kiểu thời gian chạy ngôn ngữ chung do người dùng xác định.

Cú pháp của thủ tục như sau:

Thực thi sp_rename ‘object_name’, ‘new_name’, ‘object_type’

  1. object_name chỉ định tên của đối tượng bạn muốn đổi tên.
    1. Nếu bạn đang đổi tên bảng, định dạng của object_name tham số có thể là [tên_bảng] hoặc [schema_name]. [table_name] .
    2. Nếu bạn đang đổi tên tên cột của bảng, thì định dạng của object_name tham số phải là [table_name]. [column_name].
    3. Nếu bạn đang đổi tên tên chỉ mục của bảng, thì định dạng của object_name tham số phải là [schema_name]. [table_name]. [index_name] . Hoặc có thể là [table_name]. [Index_name] .

Lưu ý: Nếu bạn đang sử dụng tên đối tượng đủ điều kiện, bạn phải chỉ định dấu ngoặc kép.

  1. new_name chỉ định tên mới của đối tượng phải là mã định danh một phần.
  2. object_type chỉ định loại đối tượng bạn muốn đổi tên (một tham số tùy chọn). Giá trị của object_type phải là bất kỳ điều nào sau đây:
    1. CỘT
    2. CƠ SỞ DỮ LIỆU
    3. INDEX
    4. ĐỐI TƯỢNG
    5. THỐNG KÊ

Thiết lập demo

Vì mục đích giải thích và kiểm tra của chúng tôi, tôi đã chuẩn bị một thiết lập demo. Có cơ sở dữ liệu có tên StudentDB , nơi tôi đã tạo một bảng có tên tblStudent .

Truy vấn để tạo cơ sở dữ liệu:

Create database [StudentDB]

Truy vấn để tạo bảng:

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

Tôi cũng đã tạo chỉ mục có tên INDX_tblStudents_Std_Code trên tblStudent bảng:

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

Truy vấn sau sẽ chèn dữ liệu vào bảng:

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)

Bây giờ, hãy xem cách chúng tôi đổi tên PK_tblStudent lập chỉ mục bằng SQL Server Management Studio.

Đổi tên chỉ mục bằng SSMS

Trước tiên, hãy để chúng tôi đổi tên PK_tblStudent chỉ mục.

  1. Khởi chạy SQL Server Management Studio và kết nối với công cụ cơ sở dữ liệu.
  2. Mở rộng StudentDB cơ sở dữ liệu> Bảng > tblStudents > Chỉ mục
  3. Nhấp chuột phải vào PK_tblStudent chỉ mục> chọn Đổi tên từ menu hoặc nhấp một lần vào tên chỉ mục.

Chỉ mục có thể chỉnh sửa được. Chỉ định tên mới của chỉ mục và nhấn Enter .

Trước khi thay đổi tên chỉ mục, SSMS sẽ hiển thị cảnh báo sau. Nhấp vào .

Tên chỉ mục đã được thay đổi và các thay đổi sẽ được áp dụng ngay lập tức.

Nếu tên chỉ mục chưa được cập nhật, hãy làm mới Chỉ mục thư mục:

Chạy truy vấn sau để xác minh rằng chỉ mục đã được đổi tên:

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

Đầu ra :

Như bạn có thể thấy, tên chỉ mục đã được thay đổi và SSMS tỏ ra hiệu quả cho mục đích này.

Bây giờ, hãy để chúng tôi hiểu cách chúng tôi có thể đổi tên chỉ mục bằng cách sử dụng sp_rename thủ tục được lưu trữ.

Đổi tên chỉ mục bằng thủ tục lưu trữ sp_rename

Chúng tôi sẽ đổi tên chỉ mục có tên INDX_tblStudents_Std_Code tới INDX_tblStudents_Student_Code .

sp_rename của chúng tôi thủ tục được lưu trữ sẽ hoạt động trong đoạn mã sau:

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

Chạy truy vấn để xác minh việc đổi tên chỉ mục:

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

Đầu ra:

Những lưu ý quan trọng

Bảo mật và Quyền

Để đổi tên chỉ mục, bạn phải có ALTER quyền trên chỉ mục.

Thống kê thay đổi như thế nào

Khi chúng tôi đổi tên chỉ mục, các thống kê liên quan đến chỉ mục sẽ tự động được đổi tên. Hãy để chúng tôi xem các thống kê được liên kết với Khóa chính.

Mở SQL Server Management Studio> Mở rộng cơ sở dữ liệu cần thiết> bảng tblStudents> Thống kê

Như bạn có thể thấy, số liệu thống kê đã được đổi tên.

Cách kế hoạch thực thi Truy vấn thay đổi

Khi chúng tôi đổi tên chỉ mục, siêu dữ liệu của kế hoạch thực thi truy vấn cũng tự động thay đổi. Để làm rõ hơn, hãy để chúng tôi xem xét kế hoạch thực thi của truy vấn bằng cách sử dụng PK_tblStudent chỉ mục.

Chạy câu lệnh SELECT sau:

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

Đầu ra:

Tên chỉ mục được thay đổi trong kế hoạch thực thi.

Tóm tắt

Do đó, chúng tôi đã tìm hiểu về sp_rename cú pháp và cách sử dụng thủ tục được lưu trữ. Hơn nữa, chúng tôi đã xác định và thử hai cách đổi tên các chỉ mục trên bảng. Bây giờ chúng ta có thể làm điều đó cả với SSMS hoặc với thủ tục được lưu trữ chuyên dụng. Chúng tôi cũng đã làm rõ tác động của việc thay đổi tên chỉ mục đối với thống kê và kế hoạch thực thi truy vấn. Hơn nữa, việc tìm kiếm và khắc phục các vấn đề phân mảnh chỉ mục có thể được thực hiện với sự trợ giúp của Trình quản lý chỉ mục dbForge. Tôi hy vọng rằng bài viết này với những lời khuyên thiết thực sẽ hữu ích cho công việc của bạn.

Các bài viết liên quan

Các cách khác nhau để đổi tên bảng máy chủ SQL


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Làm thế nào để thực hiện câu lệnh IF trong SQL?

  2. Cách sử dụng COUNT trong SQL?

  3. 7 điều chính cần nhớ về toàn cầu hóa mô hình dữ liệu

  4. Cách cài đặt Microsoft SQL trên Linux

  5. Xu hướng phần cứng và cơ sở hạ tầng cơ sở dữ liệu