Предположим, у вас есть следующая коллекция:
{name: 'john', occupation: 'engineer', country: 'UK', age: 20},
{name: 'allan', occupation: 'teacher', country: 'US', age: 25},
...
И вам нужно найти некоторых людей (например, всех торговцев наркотиками по имени Кевин) и отсортировать их по возрасту:
collection.find({name: 'kevin', occupation: 'drug-dealer'}).sort({age: -1})
Позже вы можете выполнить другой запрос, в котором вы найдете всех торговцев наркотиками (независимо от их имени) и отсортируете их по возрасту:
collection.find({occupation: 'drug-dealer'}).sort({age: -1})
Было бы лучше иметь отдельный индекс для «возраста» или сделать его частью нескольких составных индексов?
Часть составных индексов:
{occupation: 1, age: 1}
{name: 1, occupation: 1, age:1}
Отдельный индекс:
{occupation: 1}
{name: 1, occupation: 1}
{age: 1}
Что даст наилучшую производительность? Каковы плюсы и минусы каждого?