Computer >> Máy Tính >  >> Lập trình >> SQL Server

Lập chỉ mục trong SQL Server

Bài viết này giải thích cách tạo, đổi tên và xóa chỉ mục trong SQL Server.

Chỉ mục - Chỉ mục trong SQL Server là gì?

Lập chỉ mục là phương pháp được sử dụng để truy xuất bản ghi nhanh hơn. Chỉ mục trỏ đến từng giá trị xuất hiện trong cột được lập chỉ mục.

Tạo chỉ mục

Cú pháp

  CREATE [UNIQUE  ] [ CLUSTERED | NONCLUSTERED ] INDEX ten_chimuc  ] [ CLUSTERED | NONCLUSTERED ] INDEX ten_chimuc 
ON ten_bang ( cot1 [ASC | DESC ], . cot_n [ ASC | DESC ] )
[ INCLUDE ( cot1, . cot_n ) ]
[ WHERE dieu_kien ]
[ WITH ( PAD_INDEX = { ON | OFF }
| FILLFACTOR = fillfactor
| SORT_IN_TEMPDB = { ON | OFF }
| IGNORE_DUP_KEY = { ON | OFF }
| STATISTICS_NORECOMPUTE = { ON | OFF }
| STATISTICS_INCREMENTAL = { ON | OFF }
| DROP_EXISTING = { ON | OFF }
| ONLINE = { ON | OFF }
| ALLOW_ROW_LOCKS = { ON | OFF }
| ALLOW_PAGE_LOCKS = { ON | OFF }
| MAXDOP = so_toida
| DATA_COMPRESSION = { NONE | PAGE | ROW }
[ ON PARTITIONS ( { so | khoang } ]
[ ON scheme_phandoan ( cot )
| ON fnhomtaptin | ON nhomtaptin_macdinh ]
[ FILESTR EAM_ON {nhomtaptin | scheme_phandoan }; scheme_phandoan};

DUY NHẤT

Theo tùy chọn, chỉ ra kết hợp các giá trị trong cột chỉ mục phải là duy nhất.

ĐÃ ĐIỀU CHỈNH

Theo tùy chọn, chỉ ra thứ tự logic xác định cách sắp xếp vật lý của các hàng trong bảng (tức là thứ tự các bản ghi trong bảng được sắp xếp theo trường trong chỉ mục).

KHÔNG ĐƯỢC ĐIỀU CHỈNH

Theo tùy chọn, chỉ ra thứ tự logic không xác định cách sắp xếp vật lý của các hàng trong bảng.

ten_chimuc

Tên chỉ mục bạn muốn tạo

ten_bang

Tên của bảng hoặc Chế độ xem mà chỉ mục được tạo trên đó.

cot1 ,. cot_n

Cột từ đó tạo chỉ mục.

ASC | MÔ TẢ

Sắp xếp thứ tự cho các giá trị trong cột.

BAO GỒM (cot1,. cot_n)

Theo tùy chọn, cột này không phải là cột chính để thêm vào cấp độ cơ bản của chỉ mục Nonclustered.

WHERE dieu_kien

Tùy chọn, là điều kiện xác định hàng nào cần đưa vào chỉ mục.

BẬT Scheme_phanvung (cot)

Theo tùy chọn, chỉ ra không gian phân vùng xác định nhóm tệp (filegroup) nơi phân vùng được ánh xạ.

BẬT nhomtaptin

Theo tùy chọn, cho biết liệu chỉ mục có được tạo trên nhóm tệp được chỉ định hay không.

BẬT nhomtaptin_macdinh

Tùy chọn, cho biết nhóm tệp mặc định.

FILESTREAM_ON {nhomtaptin | khongigna_phanvung} khongigna_phanvung}

Theo tùy chọn, chỉ ra vị trí của dữ liệu FILESTREAM cho chỉ mục Clustered.

Ví dụ về chỉ mục trong SQL Server

  CREATE IND EX danhba_chimuc 
ON danhba (h o);

Trong ví dụ này, chúng tôi tạo một chỉ mục có tên danhba_chimuc trên danh sách, bao gồm một trường gọi là ho. Có thể tạo chỉ mục của nhiều trường như trong ví dụ dưới đây.

  C REATE INDEX danhba_chimuc 
ON da (cough, ten);

Ví dụ này tạo danh sách tênba_chimuc trong danh sách tên gồm hai trường ho và ten. Vì không có ASC hoặc DESC nào được chỉ định cho từng mục, chỉ mục được tạo với mỗi trường theo thứ tự mặc định sẽ tăng dần. Nếu bạn muốn theo thứ tự giảm dần, bạn có thể làm như sau.

  CREATE INDEX list name 
ON danhba (ho DESC, te n DESC);

Lệnh CREATE INDEX ở trên chỉ tạo tên người dùng và _chimuc với họ và tên được sắp xếp theo thứ tự giảm dần.

Ví dụ về chỉ mục duy nhất

  CREATE UNIQUE IN DEX danhba_chimucduynhat 
ON danhba (ho, ten);

Ví dụ này tạo một chỉ mục có tên danh_chimuc trên danh sách tên bao gồm họ và tên, đồng thời đảm bảo rằng sự kết hợp của hai trường này là duy nhất. Có thể tạo một chỉ mục duy nhất của Clustered để thứ tự vật lý của các hàng trong bảng sẽ được quyết định bởi thứ tự logic của chỉ mục.

  CREAT E UNIQUE CLUSTERED INDEX danhba_chimucduynhat 
ON danh three (ho, ten);

Chỉ mục mới được tạo trong ví dụ này có tên là danhba_chimucduynhat gồm hai trường họ và tên, đồng thời thay đổi thứ tự sắp xếp của các hàng trong bảng theo đó.

Đổi tên chỉ mục trong SQL Server

Cú pháp

  sp_rename 'tenbang.ten_chi_muc_cu', 'ten_chimuc_moi', 'INDEX'; 

ten_bang

Tên của bảng mà chỉ mục được tạo.

ten_chimuc_cu

Tên của chỉ mục bạn muốn đổi tên.

ten_chimuc_moi

Tên mới cho chỉ mục.

Ví dụ:

  sp_rename 'danhba.danhba_chimuc', 'danhba_chimuc_ten', 'INDEX'; 

Ví dụ này đổi tên chỉ mục trong bảng namba từ danhba_chimuc thành listba_chimuc_ten.

Xóa chỉ mục trong SQL Server

Cú pháp

  DROP INDEX tenbang.ten_chimuc; 

ten_bang

Tên của bảng mà chỉ mục được tạo.

ten_chimuc_cu

Tên của chỉ mục cần xóa.

Ví dụ:

  DROP INDEX danhba.danhba_chimuc; 

Ví dụ này xóa chỉ mục có tên ba_chimuc.