T-SQL - Chỉ mục

Indexeslà các bảng tra cứu đặc biệt mà công cụ tìm kiếm cơ sở dữ liệu có thể sử dụng để tăng tốc độ truy xuất dữ liệu. Nói một cách đơn giản, mộtindexlà một con trỏ đến dữ liệu trong bảng. Một chỉ mục trong cơ sở dữ liệu rất giống với một chỉ mục ở cuối sách.

Ví dụ: nếu bạn muốn tham chiếu đến tất cả các trang trong một cuốn sách thảo luận về một chủ đề nhất định, trước tiên bạn tham khảo chỉ mục, mục lục này liệt kê tất cả các chủ đề theo thứ tự bảng chữ cái và sau đó được tham chiếu đến một hoặc nhiều số trang cụ thể.

Một chỉ mục giúp tăng tốc các truy vấn SELECT và mệnh đề WHERE, nhưng nó làm chậm quá trình nhập dữ liệu, với các câu lệnh UPDATE và INSERT. Chỉ mục có thể được tạo hoặc giảm xuống mà không ảnh hưởng đến dữ liệu.

Tạo chỉ mục liên quan đến câu lệnh CREATE INDEX, cho phép bạn đặt tên cho chỉ mục, chỉ định bảng và cột hoặc các cột nào để lập chỉ mục và cho biết chỉ mục theo thứ tự tăng dần hay giảm dần.

Chỉ mục cũng có thể là duy nhất, tương tự như ràng buộc UNIQUE, trong đó chỉ mục ngăn các mục nhập trùng lặp trong cột hoặc kết hợp các cột mà trên đó có chỉ mục.

Lệnh CREATE INDEX

Sau đây là cú pháp cơ bản của CREATE INDEX.

Cú pháp

CREATE INDEX index_name ON table_name

Chỉ mục một cột

Chỉ mục một cột là chỉ mục được tạo chỉ dựa trên một cột của bảng. Sau đây là cú pháp cơ bản.

Cú pháp

CREATE INDEX index_name 
ON table_name (column_name)

Thí dụ

CREATE INDEX singlecolumnindex 
ON customers (ID)

Chỉ mục duy nhất

Các chỉ mục duy nhất không chỉ được sử dụng cho hiệu suất mà còn cho tính toàn vẹn của dữ liệu. Chỉ mục duy nhất không cho phép chèn bất kỳ giá trị trùng lặp nào vào bảng. Sau đây là cú pháp cơ bản.

Cú pháp

CREATE UNIQUE INDEX index_name 
on table_name (column_name)

Thí dụ

CREATE UNIQUE INDEX uniqueindex 
on customers (NAME)

Chỉ mục tổng hợp

Chỉ mục tổng hợp là một chỉ mục trên hai hoặc nhiều cột của bảng. Sau đây là cú pháp cơ bản.

Cú pháp

CREATE INDEX index_name on table_name (column1, column2)

Thí dụ

CREATE INDEX compositeindex 
on customers (NAME, ID)

Cho dù tạo chỉ mục cột đơn hay chỉ mục tổng hợp, hãy xem xét (các) cột mà bạn có thể sử dụng rất thường xuyên trong mệnh đề WHERE của truy vấn làm điều kiện lọc.

Nếu chỉ có một cột được sử dụng, chỉ mục một cột nên là lựa chọn. Nếu có hai hoặc nhiều cột thường được sử dụng trong mệnh đề WHERE làm bộ lọc, chỉ mục tổng hợp sẽ là lựa chọn tốt nhất.

Chỉ mục ngầm định

Chỉ mục ngầm là các chỉ mục được máy chủ cơ sở dữ liệu tự động tạo khi một đối tượng được tạo. Các chỉ mục được tạo tự động cho các ràng buộc khóa chính và các ràng buộc duy nhất.

Lệnh DROP INDEX

Một chỉ mục có thể bị loại bỏ bằng lệnh MS SQL SERVER DROP. Cần cẩn thận khi giảm chỉ số vì hiệu suất có thể bị chậm lại hoặc được cải thiện.

Cú pháp

Sau đây là cú pháp cơ bản.

DROP INDEX tablename.index_name

Khi nào cần tránh lập chỉ mục?

Mặc dù các chỉ mục nhằm mục đích nâng cao hiệu suất của cơ sở dữ liệu, nhưng đôi khi chúng nên được tránh. Các nguyên tắc sau chỉ ra khi nào việc sử dụng chỉ mục nên được xem xét lại:

  • Chỉ mục không nên được sử dụng trên các bảng nhỏ.

  • Các bảng có hoạt động cập nhật hoặc chèn hàng loạt lớn, thường xuyên sẽ không được lập chỉ mục.

  • Chỉ mục không được sử dụng trên các cột chứa nhiều giá trị NULL.

  • Các cột được thao tác thường xuyên sẽ không được lập chỉ mục.