Index là cấu trúc dữ liệu riêng, có thứ tự (thường là B-tree) giữ bản sao cột được đánh index + con trỏ tới hàng. Nhờ có thứ tự, DB tìm bằng cách đi cây thay vì quét toàn bảng (full table scan) → tra cứu nhanh trên WHERE, JOIN, ORDER BY của cột đó.
Đánh đổi: tốn thêm dung lượng và làm chậm ghi (mỗi INSERT/UPDATE/DELETE phải cập nhật index).
Liên quan hay hỏi — N+1 query: lặp query con cho từng bản ghi (1 query cha + N query con). Khắc phục bằng JOIN/eager loading/batch thay vì gọi trong vòng lặp. Dùng EXPLAIN để xem query có dùng index không.