Пн go - Является ли поиск по _id (findById) быстрее, чем поиск с использованием _id и индексированного поля для использования индекса? - PullRequest
0 голосов
/ 10 января 2020

У меня любопытный вопрос, и я не могу найти ответ.

Я запрашиваю один документ и знаю его _id. До сих пор я полагал, что лучше всего использовать findById.

Однако мне интересно, знаю ли я, что этот документ находится в индексе, который сильно сузит его. Буду ли я искать лучше, используя _id и какое-то другое поле с указанным c index

Примеры - я знаю его "_id", но я также знаю, что это "сезон", и у нас есть коллекция, проиндексированная по сезону

Предполагаемый подход

Model.findById().lean();

Мой любопытный подход может быть лучше? Быстрее?

Model.findOne({ season: "", _id: "" }).lean();

Интересно, поможет ли индекс сезона найти его быстрее, чем весь поиск, используя только _id

Спасибо

Даниэль

1 Ответ

0 голосов
/ 10 января 2020

Технически нет.

MongoDB использует B-дерево индексы.

Свойства B-дерева:

Algorithm   Average     Worst case
Space       O(n)        O(n)
Search      O(log n)    O(log n)
Insert      O(log n)    O(log n)
Delete      O(log n)    O(log n)

Index searching

Как только данные растут, для определения среднего значения требуется то же время.

Даже если вы создаете Compound Index, состоит из { season: 1, _id: 1 }, индекс сортируется первым по season, а затем в пределах значения каждого сезона сортирует по _id.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...