Bạn có từng tự hỏi “Chỉ mục là gì?”? Đương nhiên rồi, nếu không phải, bạn đã không đọc bài viết này. Trên thực tế, không phải ai cũng hiểu rõ về chỉ mục. Vì vậy, bài viết này sẽ giải đáp thắc mắc của bạn về khái niệm này.
Forza sẽ cùng bạn khám phá từ những khái niệm cơ bản nhất, đầu tiên là về chỉ mục.
Chỉ mục là gì?
Chỉ mục, hoặc Index, là một bảng tìm kiếm đặc biệt mà Database Search Engine sử dụng để tăng thời gian thu thập dữ liệu. Nó giúp tăng hiệu suất thu thập dữ liệu hiệu quả hơn.
Chỉ mục giúp tăng hiệu suất thu thập dữ liệu.
Mỗi chỉ mục sẽ dẫn đến một khu vực dữ liệu trong một bảng. Một chỉ mục trong Database tương ứng với một phần phụ lục trong cuốn sách.
Đơn giản hơn, chỉ mục là giá trị được dùng để khai báo thông tin với công cụ tìm kiếm như Google. Trong quá trình này, nó sẽ khai báo những website trên hệ thống như không muốn được index.
Vậy thời điểm đánh chỉ mục hợp lý là khi nào?
Nên đánh chỉ mục cho bảng vào thời điểm nào?
Khi bạn thay mới cấu trúc bảng dữ liệu, bạn cần sử dụng Add Index. Nói một cách đơn giản hơn, khi bạn thay đổi nội dung cuốn sách của mình, mục lục là thứ đầu tiên bạn cần làm lại.
Khi tiến hành thay mới cấu trúc dữ liệu đều cần sử dụng Add Index.
Dữ liệu có cấu trúc là dữ liệu có số thứ tự hoặc dữ liệu có hệ thống, có cách lưu trữ. Mục đích của nó là giúp bạn lưu trữ dữ liệu dễ dàng và nhanh chóng, đồng thời hỗ trợ nhu cầu truy cập thông tin của người dùng.
Nếu bạn sử dụng Database cho các thao tác INSERT hoặc UPDATE nhiều hơn là SELECT, chỉ mục chỉ làm giảm tốc độ các thao tác. Chỉ mục giống như các tab, chúng chỉ giúp tìm kiếm dữ liệu nhanh hơn khi có nhu cầu. Do đó, để tạo một chỉ mục tốt, bạn cần xem xét cách bạn sẽ truy vấn dữ liệu như thế nào. Tốc độ truy vấn sẽ phù hợp với yêu cầu của Google và mang lại hiệu quả tốt nhất.
Bạn đã hiểu rõ hơn về khái niệm chỉ mục, nhưng có bao nhiêu loại chỉ mục thường được sử dụng?
Một số loại chỉ mục phổ biến
Chỉ mục R-Tree
Loại chỉ mục này không phổ biến như các loại khác. Nó chỉ được sử dụng cho dữ liệu không gian (Spatial data). Vì vậy, khi tìm hiểu về R-Tree, cần nắm rõ thông tin này để tránh nhầm lẫn với các loại chỉ mục khác.
Chỉ mục B-Tree Index
B-Tree là chỉ mục hữu dụng hơn so với R-Tree.
B-Tree Index là loại chỉ mục rất hữu dụng so với R-Tree. Loại chỉ mục này có các đặc điểm nổi bật sau:
- Dữ liệu index trong B-Tree được sắp xếp và lưu trữ theo dạng cây, tức là có root, branch, leaf. Giá trị của các node được tổ chức theo thứ tự tăng dần từ trái qua phải.
- Truy vấn dữ liệu trong B-Tree là một quá trình đệ quy, bắt đầu từ root node và tìm kiếm tới branch và leaf. Sau khi tìm đủ dữ liệu thỏa mãn với điều kiện truy vấn, mới tiếp tục sử dụng.
- Chỉ mục B-Tree index được sử dụng cho các cột trong bảng khi muốn tìm kiếm giá trị nằm trong một khoảng nào đó. Ví dụ, bạn muốn tìm kiếm những học sinh có điểm Văn từ 7-9.
Chỉ mục Hash Index
Chỉ mục Hash Index có một vài điểm khác biệt so với B-Tree Index:
- Dữ liệu index được sắp xếp theo dạng Key – Value và được liên kết chặt chẽ với nhau.
- Khác với chỉ mục B-Tree, chỉ mục Hash Index chỉ nên sử dụng trong các biểu thức toán tử là = và <>. Nó không được sử dụng cho toán từ tìm kiếm giá trị trong một khoảng như > hay <.
Hash Index có một vài điểm khác biệt so với B-Tree Index.
- Không thể tối ưu hóa thuật toán ORDER BY bằng cách sử dụng Hash Index do nó không có khả năng tìm kiếm phần tử tiếp theo trong Order.
- Tất cả nội dung của Key được sử dụng để tìm kiếm giá trị records, chứ không giống với B-Tree là một phần của node cũng có thể được sử dụng để tìm kiếm.
- Hash có tốc độ tìm kiếm nhanh hơn B-Tree.
Bạn đã hiểu sơ lược về khái niệm chỉ mục cũng như cách đánh và các loại phổ biến của chỉ mục chưa? Tiếp theo, mình sẽ chia sẻ với bạn một số lệnh index cơ bản.
Một số lệnh index
Trong phần này, ngoài các lệnh index phổ biến, mình sẽ chia sẻ cách tạo và xóa các chỉ mục trong bảng.
Tạo index trong một bảng
Cú pháp để tạo index cơ bản:
CREATE INDEX ten_chi_muc ON ten_bang;
Unique index được sử dụng không chỉ để tăng hiệu suất, mà còn để bảo toàn dữ liệu. Một Unique index không cho phép bất kỳ bản sao giá trị nào được chèn vào trong bảng.
Tạo index cho cột được chỉ rõ trong bảng
CREATE UNIQUE INDEX index_name
ON table_name(column 1, column 2,…);
Trong trường hợp không chỉ rõ tên cột được đánh chỉ mục trong bảng, MySQL sẽ mặc định đánh chỉ mục trên primary key hoặc các ràng buộc mang tính duy nhất trong cơ sở dữ liệu.
Các lệnh thêm chỉ mục
- Thêm chỉ mục cho bảng, với chỉ mục mang tính duy nhất và không thể null.
ALTER TABLE tbl_name ADD PRIMARY KEY (column 1, column 2,..);
- Thêm chỉ mục cho bảng, với chỉ mục mang tính duy nhất nhưng có thể null.
ALTER TABLE tbl_name ADD UNIQUE index_name (column 1, column 2,..)
- Thêm chỉ mục cho bảng, có thể trùng lặp.
ALTER TABLE tbl_name ADD INDEX index_name (column 1, column 2,..)
- Thêm chỉ mục đặc biệt cho tìm kiếm văn bản.
ALTER TABLE tbl_name ADD FULLTEXT index_name (column 1, column 2,..)
Các lệnh xóa chỉ mục
Một chỉ mục hoàn toàn có thể bị xóa bằng lệnh DROP INDEX trong SQL. Bạn cần lưu ý khi xóa một chỉ mục, vì khi đó hiệu suất có thể chậm hơn hoặc không được cải thiện.
Cú pháp cơ bản của lệnh DROP INDEX:DROP INDEX index_name;
Các bước tạo chỉ mục trong bảng tương đối đơn giản. Tuy nhiên, bạn cần lưu ý những điểm sau trong quá trình sử dụng chỉ mục.
Một số lưu ý khi sử dụng chỉ mục
Mặc dù đã hiểu rõ khái niệm chỉ mục, nhưng mục đích của chỉ mục là gì? Chỉ mục được sử dụng để nâng cao hiệu suất của Cơ sở dữ liệu, nhưng đôi khi, bạn nên hạn chế sử dụng chúng. Dưới đây là một số điểm bạn cần xem xét để cân nhắc có nên sử dụng chỉ mục hay không:
- Không nên sử dụng chỉ mục trong các bảng nhỏ.
- Bảng có thao tác update, insert thường xuyên.
- Không nên sử dụng chỉ mục trên các cột chứa nhiều giá trị NULL.
- Không nên sử dụng chỉ mục trên các cột thường xuyên bị chỉnh sửa.
Bài viết này đã tổng hợp thông tin trả lời thắc mắc “Chỉ mục là gì?” của đa số các bạn. Hi vọng với những kiến thức trên, bạn đã biết cách tạo và xóa chỉ mục trong bảng của mình.
Chúc bạn thành công.
Tìm hiểu thêm: Kiến thức Marketing, Onpage, Offpage.