Index trong SQL

Chỉ mục (Index) là một cấu trúc dữ liệu đặc biệt được sử dụng để tăng tốc độ truy vấn dữ liệu trong cơ sở dữ liệu SQL. Nó hoạt động tương tự như mục lục của một cuốn sách, giúp bạn nhanh chóng tìm đến trang mong muốn mà không cần phải đọc qua từng trang.

INDEX

Cú pháp cơ bản:

CREATE INDEX <Tên chỉ mục> ON <Tên bảng> (<Tên cột>, <Tên cột>, ...);

Trong đó:

  • <Tên chỉ mục>: Tên của chỉ mục bạn muốn tạo.
  • <Tên bảng>: Tên của bảng bạn muốn tạo chỉ mục.
  • <Tên cột>: Tên của cột (hoặc các cột) bạn muốn tạo chỉ mục.

Ví dụ:

CREATE INDEX Ten_NV ON NhanVien (Ten, Ho);

Câu lệnh này tạo ra một chỉ mục có tên Ten_NV trên bảng NhanVien. Chỉ mục này sẽ sắp xếp dữ liệu trong bảng theo hai cột Ten và Ho.

Xoá Index:

--ORACLE
DROP INDEX index_name;


--CSDL KHÁC
ALTER TABLE table_name
DROP INDEX index_name;

Tuỳ vào từng loại hệ quản trị CSDL khác nhau mà chúng ta có cấu trúc từ khoá sử dụng khác nhau.

Có một số loại chỉ mục khác nhau:

  • Chỉ mục cụm (Clustered index): Là chỉ mục duy nhất được phép trên một bảng và nó được sử dụng để sắp xếp dữ liệu vật lý của bảng.
  • Chỉ mục phi cụm (Non-clustered index): Là chỉ mục không sắp xếp dữ liệu vật lý của bảng.

Lợi ích của việc sử dụng chỉ mục:

  • Tăng tốc độ truy vấn dữ liệu.
  • Giúp tối ưu hóa hiệu suất của cơ sở dữ liệu.

Tuy nhiên, việc sử dụng chỉ mục cũng có một số hạn chế:

  • Tốn thêm dung lượng lưu trữ.
  • Gây ảnh hưởng đến hiệu suất của các thao tác INSERT, UPDATE và DELETE.
  • Ảnh hưởng tới hiệu năng của CSDL

Do đó, bạn cần cân nhắc kỹ lưỡng trước khi tạo chỉ mục cho một bảng.

Một số lưu ý khi sử dụng câu lệnh CREATE INDEX:

  • Tên chỉ mục phải tuân theo quy tắc đặt tên của hệ quản trị cơ sở dữ liệu bạn đang sử dụng.
  • Bạn chỉ có thể tạo chỉ mục cho các cột có kiểu dữ liệu hợp lệ.
  • Không nên tạo quá nhiều chỉ mục cho một bảng.

Datalinks.vn

Hello các bạn, tôi là Dương Nguyễn (DuoDBA - https://www.youtube.com/@DuoDBA) tác giả của blog này. Mong muốn được chia sẻ kiến thức và kinh nghiệm về cơ sở dữ liệu với những người đam mê và quan tâm đến lĩnh vực này. Tôi có tổ chức các khoá Coaching về #OracleDatabase và luyện thi #OCP thường xuyên, các bạn muốn có người đồng hành thì alo tôi nhé. Call/Zalo: 0765 871 888. Thanks you !.....
5 1 đánh giá
Đánh giá bài viết
Theo dõi
Thông báo của
guest

2 Góp ý
Cũ nhất
Mới nhất Được bỏ phiếu nhiều nhất
Phản hồi nội tuyến
Xem tất cả bình luận
TungIT
TungIT
6 tháng trước

DB có nhiều index có ảnh hưởng gì ko hay là giúp tăng tốc db hiệu quả?

TungIT
TungIT
6 tháng trước

tạo hết index cho các table, cột… thì có lợi gì ko bạn?