Tới nội dung chính
Danh mục
Hệ quản trị SQL

Index trong SQL – Học SQL từ cơ bản đến nâng cao

INDEX là gì trong SQL? Đây là câu hỏi tôi cũng nhận được khá nhiều từ các bạn trên Facebook. Do vậy tôi quyết định viết bài viết về index trong sql server để các bạn rõ hơn nhé. Nào bắt đầu ngay thôi.

1. Chỉ mục index trong SQL là gì?

Chỉ mục SQL hay Index SQL là một bảng tra cứu mà công cụ tìm kiếm CSDL có thể dùng để tăng tốc hiệu suất và thời gian truy xuất dữ liệu.

Nói một cách đơn giản khác việc bạn đánh chỉ mục là đánh mục lục cho quyển sách trong 1 cuốn sách (từng dữ liệu trong database).

Khi INDEX bạn sẽ tăng tốc các truy vấn SELECT chừa mệnh đề ORDER hay WHERE. Tuy nhiên đối với lệnh UPDATE hay INSERT sẽ khá chậm. Bạn có thể xóa hoặc lập chỉ mục , chúng không ảnh hưởng gì đến database.

Các kiểu index trong SQL

  • Single-Column Index
  • Unique Index
  • Composite Index
  • Implicit Index

Sử dụng lệnh CREATE INDEX để tạo một chỉ mục, bạn cũng có thể đặt tên, xác định các cột, bảng muốn index và xác định các index theo thứ tự tăng dần.

2. Lệnh CREATE INDEX

Cú pháp cơ bản của lệnh CREATE INDEX trong SQL như sau:

CREATE INDEX ten_index ON ten_bang;

3. Chỉ mục SINGLE – COLUMN

Single-Column Index được tạo cho duy nhất 1 cột trong bảng. Cú pháp cơ bản như sau:

CREATE INDEX ten_index

ON ten_bang (ten_cot);

4. Chỉ mục UNIQUE

Unique Index là chỉ mục duy nhất, được sử dụng để đảm bảo tính toàn vẹn dữ liệu và tăng hiệu suất. Unique index không cho phép chèn bất kỳ giá trị trùng lặp nào được chèn vào bảng đã đươc lập chỉ mục. Cú pháp cơ bản như sau.

CREATE UNIQUE INDEX ten_index

ON ten_bang (ten_cot);

5. COMPOSITE INDEX – chỉ mục kết hợp

Composite Index là chỉ mục kết hợp dành cho hai hoặc nhiều cột trong một bảng. Cú pháp cơ bản của nó như sau:

CREATE INDEX ten_index

ON ten_bang (cot1, cot2);

Lưu ý:

  • Việc tạo Single-Column Index hay Composite Index tùy thuộc vào tần suất bạn sử dụng mệnh đề WHERE của truy vấn dưới dạng điều kiện bộ lọc.
  • Nếu chỉ có một cột được sử dụng, thì lựa chọn tốt nhất là Single-column Index. Nếu có hai hoặc nhiều cột được sử dụng thường xuyên trong mệnh đề WHERE như là các bộ lọc thì dạng chỉ mục Composite Index là lựa chọn tối ưu hơn.

6. IMPLICIT INDEX – chỉ mục ẩn

Implicit Index (Index ngầm định) là chỉ mục mà được tạo tự động bởi Database Server khi một bảng được tạo.

Các Index ngầm định được tạo tự động cho các ràng buộc Primary key và các ràng buộc Unique.

7. Lệnh DROP INDEX

Khi bạn không muốn đánh chỉ mục INDEX nữa bạn có thể bỏ chúng bằng cách DROP với cú pháp:

DROP INDEX ten_index;

Tôi khuyên bạn, khi muốn DROP chỉ mục nào hãy cẩn thận, khi đó hiệu suất có thể chậm hơn đấy.

8. Nên tránh sử dụng INDEX lúc nào?

Sử dụng INDEX thì có thể tăng khả năng của Database, tuy nhiên bạn cũng không nên quá lạm dụng chúng một cách thái quá. Dưới đây, tôi sẽ liệt kê ra các trường hợp mà khi đó bạn nên cân nhắc trước khi INDEX:

  • Đừng INDEX cho các bảng nhỏ, ít bản ghi
  • Ở các bảng mà UPDATE và INSERT xảy ra với tần suất lớn, thường xuyên cũng không nên INDEX.
  • Các cột chứa số lượng lớn giá trị NULL cũng đừng nên sử dụng
  • Các cột bạn thường xuyên sửa đổi chúng cũng đừng nên INDEX

Như vậy là tôi đã hoàn thành hướng dẫn các bạn về các loại INDEX trong SQL. Hãy tiếp tục đọc các bài viết sau của tôi để rõ hơn về SQL nhé

Thảo Larskanis

@Thảo Larskanis

Lĩnh vực công nghệ thông tin, đặc biệt là cấu trúc dữ liệu ngày càng quan trọng và trở nên cần thiết hơn với nhiều doanh nghiệp. Nhận thấy rõ được tầm quan trọng của SQL, Thảo Nguyễn - người đã có nhiều năm học tập và làm việc trong lĩnh vực công nghệ thông tin đã quyết định thành lập một website chia sẻ kiến thức cũng như kinh nghiệm của bản thân về lĩnh vực SQL đến cho những bạn có đam mê và muốn hiểu rõ hơn về lĩnh vực này.