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.
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.
DB có nhiều index có ảnh hưởng gì ko hay là giúp tăng tốc db hiệu quả?
tạo hết index cho các table, cột… thì có lợi gì ko bạn?