Composite (multi-column) index đánh index trên nhiều cột theo thứ tự, vd (a, b, c). Index được sắp xếp theo a trước, rồi b, rồi c.
Quy tắc leftmost prefix: index chỉ dùng được khi query lọc từ cột trái nhất trở đi liên tục:
- Dùng tốt: WHERE a = ?, WHERE a = ? AND b = ?, WHERE a = ? AND b = ? AND c = ?.
- Không dùng được (hoặc kém): WHERE b = ? đơn lẻ, hoặc WHERE c = ? — vì bỏ qua tiền tố trái.
Hệ quả thiết kế:
- Đặt cột hay dùng cho equality và độ chọn lọc cao ở bên trái.
- Cột dùng cho range (>, BETWEEN) nên ở cuối, vì sau range thì các cột sau không còn tận dụng được thứ tự.
Một composite index (a, b) thường thay được index đơn (a) → tránh tạo index thừa. Lưu ý (a, b) và (b, a) là hai index khác nhau, phục vụ mẫu truy vấn khác nhau.