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 theo country hoặc country+name, nhưng không hiệu quả nếu chỉ theo name.
  • 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