Мне трудно решить, где лучше всего разместить поле сортировки в составном индексе mongodb.
Насколько я понимаю, нам нужно выбрать наивысшую кардинальность и селективность в качестве предшествующих полей в составном индексе.
db.person.createIndex({ rating: 1, name: 1, gender: 1});
В этом примере рейтинг варьируется только от 1 до 5, а пол — M или F. Таким образом, имя всегда имеет наивысшую кардинальность и селективность и должно быть самым левым полем в составном индексе; однако вариант использования для запроса таков, что рейтинг всегда предоставляется в запросе, а имя или пол могут быть дополнительно предоставлены через фильтр в приложении.
Какой вариант лучше подходит для этого случая:
1)
db.person.createIndex({ rating: 1, name: 1, gender: 1});
2)
db.person.createIndex({ rating: 1});
db.person.createIndex({ name: 1, gender: 1});
db.person.createIndex({ gender: 1});