Не могу понять как работают индексы в MongoDB?

Изучаю индексацию в MongoDB, возникли следующие вопросы:
1) Если будут два противоречащих индекса, как монго определяет, по какому индексу делать выборку?
Например, пусть имеется коллекция с документами вида {'name': 'VasyaPupkin', 'age': 30}. Имеется два индекса {'name': 1, 'age': -1} и {'name': -1, 'age': -1}. Делаем выборку db.users.find({"name": "???"}). То какой индекс будет использован?

2) Важен ли порядок ключей в составном индексе?

3) Если ли связь между индексами и указанием сортировки (find(...).sort(...)) в запросе?
  • Вопрос задан
  • 1077 просмотров
Решения вопроса 2
p00h
@p00h
Фехтовальщик-стропальщик
1) "Противоречащих" индексов не будет. Возможны, например, избыточные.
{'name': 1, 'age': -1}
и
{'name': -1, 'age': -1}
это два разных индекса.
О тонкостях работы оптимизатора запросов я не скажу, но монга, уверен, достаточно умна, чтобы использовать именно тот индекс, который нужен в настоящий момент. Вот здесь великолепно расписано как монга анализирует запросы.

2) Разумеется да. Если мы составляем индекс
name, age
то именно в таком порядке мы должны подавать элементы в запросе, в противном случае индекс будет бесполезен.

3) Если я правильно понял вопрос, индекс и нужен именно для поиска и сортировки.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы