какой индекс будет эффективен для запроса типа: FieldA <= xxx AND FieldB> = xxx - PullRequest
0 голосов
/ 26 февраля 2020

У меня есть база данных "диапазон" IP . Я хочу хранить эти IP в mongoDB. Поэтому у меня есть документы, такие как

{
  ...
  ipv4_start: int32,
  ipv4_end: int32,
  ...
}

Теперь Какой индекс я могу создать , чтобы максимально ускорить этот запрос:

Where ipv4_start <= xxx AND ipv4_end >= xxx

Ответы [ 2 ]

0 голосов
/ 27 февраля 2020

Просто сделайте их обоих индексом. ваш пример запроса будет использовать индексы.

0 голосов
/ 26 февраля 2020

Обычно составные индексы подходят для этого.

Порядок полей, перечисленных в составном индексе, важен

Когда вы строите индекс типа {field1: 1, field2: 1}, тогда запрос на field2 не будет использовать индекс. следовательно, если вы планируете использовать любой из этих индексов полей для запросов, которые не требуют второго поля, вы должны поставить это поле первым при создании индекса. «из данных вы должны построить нисходящий индекс вместо восходящего.

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