Стратегия индексирования MongoDB для запроса OR SQL - PullRequest
0 голосов
/ 31 января 2020

У меня есть вопрос относительно сценария ниже. Рассмотрим совокупность элементов ниже:

{
   transId : "123",
   category : "A",
   date : "2020-01-20"
}

category имеет несколько возможных значений (A, B, C, D)

Мой запрос: 'Select * from DB where transId = "id" AND category is either A or B AND d1 < date < d2', then sort by date in descending order. (Пожалуйста, пока игнорируйте правильность синтаксиса)

Итак, я придумаю составной индекс:

{transId : 1, category: 1, date: -1}

У меня вопрос, теряю ли я преимущество автоматической сортировки в Понедельник go?

Под этим подразумевается, скажем, критерий категории в запросе просто 'category = A', тогда mon go db может просто использовать префикс {transId : 1, category: 1} для переход к набору дат (который уже отсортирован в порядке des c) и возвращает результаты на основе диапазона в критерии даты без какой-либо сортировки.

Однако в моем запросе, где category может быть либо «A», либо «B», следовательно, mon go должен сначала найти два набора дат, а затем выполнить операцию сортировки с ними, чтобы получить окончательный результат, что намного менее оптимально, чем выше. (Является ли это толкованием того, что происходит правильно?)

Другой вопрос: какова наилучшая стратегия индекса для моего запроса?

Спасибо

...