Index (Chỉ mục) là gì?
Index là cấu trúc dữ liệu giúp truy xuất bản ghi nhanh hơn. Index trỏ đến từng giá trị xuất hiện trong cột được đánh chỉ mục.
Tạo Index (CREATE INDEX)
CREATE [UNIQUE] [CLUSTERED | NONCLUSTERED] INDEX ten_chi_muc
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_toi_da
| DATA_COMPRESSION = {NONE | PAGE | ROW})
[ON partition_scheme (cot) | ON filegroup | ON default_filegroup]
[FILESTREAM_ON {filegroup | partition_scheme}];
Giải thích tùy chọn chính:
- UNIQUE: Giá trị trong cột index phải duy nhất.
- CLUSTERED: Thứ tự logic quyết định thứ tự vật lý của hàng (bảng sắp theo index).
- NONCLUSTERED: Thứ tự logic KHÔNG quyết định thứ tự vật lý (mặc định).
- INCLUDE: Thêm cột không phải khóa chính vào mức lá của Nonclustered index.
- WHERE: Lọc hàng đưa vào index (filtered index).
Ví dụ
Index 1 cột
CREATE INDEX danhba_chimuc
ON danhba (ho);
Index nhiều cột
CREATE INDEX danhba_chimuc
ON danhba (ho, ten);
Mặc định ASC. Muốn DESC:
CREATE INDEX danhba_chimuc
ON danhba (ho DESC, ten DESC);
Unique Index
CREATE UNIQUE INDEX danhba_chimucduynhat
ON danhba (ho, ten);
Unique Clustered Index
CREATE UNIQUE CLUSTERED INDEX danhba_chimucduynhat
ON danhba (ho, ten);
Đổi thứ tự vật lý hàng theo index.
Đổi tên Index (sp_rename)
sp_rename 'ten_bang.ten_chi_muc_cu', 'ten_chi_muc_moi', 'INDEX';
Ví dụ
sp_rename 'danhba.danhba_chimuc', 'danhba_chimuc_ten', 'INDEX';
Xóa Index (DROP INDEX)
DROP INDEX ten_bang.ten_chi_muc;
Ví dụ
DROP INDEX danhba.danhba_chimuc;