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 INDEX 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.
CREATE 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 INDEX 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.
CREATE 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.