Database Index (Chỉ mục)
Cấu trúc dữ liệu bổ sung giúp truy vấn nhanh hơn - giống mục lục của cuốn sách: tra mục lục để nhảy thẳng đến trang cần, thay vì đọc tuần tự từng trang (full table scan).
Cách hoạt động
Khi tạo index trên cột, DB xây một cấu trúc (thường là B-Tree) sắp xếp giá trị cột + con trỏ tới vị trí lưu trữ. Nhờ được sắp xếp, tìm một giá trị hoặc theo khoảng (>, <, BETWEEN) nhanh hơn nhiều. Hash index chỉ hữu ích cho so sánh =/!= (không sắp thứ tự); B-Tree đa năng hơn.
Chiến lược dùng index hiệu quả
- Đừng lạm dụng - index tốn không gian và làm chậm ghi (mỗi INSERT/UPDATE/DELETE phải cập nhật index).
- Index các cột hay dùng trong WHERE, JOIN, ORDER BY/GROUP BY.
- Hạn chế index cột độ phân biệt thấp (gender chỉ có Male/Female) - ít hiệu quả.
- Composite index cho truy vấn kết hợp - thứ tự cột quan trọng: index
(country, name)phục vụ được truy vấn theocountryhoặccountry+name, nhưng không hiệu quả nếu chỉ theoname. - Primary key / UNIQUE / khóa ngoại thường tự động có index - đừng tạo trùng.
- Xóa index không còn dùng để tránh làm chậm ghi.
Cột text dài (
description) không nên index toàn bộ → dùng giải pháp tìm kiếm khác (ElasticSearch).
Liên quan
- SQL vs NoSQL - index là công cụ tối ưu truy vấn
- Chọn kiểu lưu trữ - index nằm trong bàn tối ưu hiệu năng
- Latency - index để giảm thời gian truy vấn