Như danh bạ sắp theo "họ rồi tên", thứ tự field trong compound index quyết định query nào dùng được nó. Quy tắc thực dụng là ESR (Equality → Sort → Range):
- Equality trước: field lọc bằng (vd tenantId).
- Sort tiếp theo: field dùng để sắp xếp.
- Range sau cùng: field lọc khoảng như >, <, $in (vd createdAt).
Ví dụ: index { tenantId: 1, status: 1, createdAt: -1 } tốt cho query lọc bằng tenantId/status rồi sort theo createdAt.
javascript
db.orders.createIndex({ tenantId: 1, status: 1, createdAt: -1 })Lưu ý: không có thứ tự nào đúng cho mọi query.
Nếu các query khác nhau nhiều, cân nhắc tạo index riêng hoặc đổi access pattern.