Это правильный вопрос. Вы не используете эти ключи для сортировки, поэтому я предполагаю, что ваши запросы не содержат сортировки, поскольку вы должны знать (чтобы сказать, что вы сделали), что пересечение индексов не может работать между сортировками.
Я бы сказал: лучше иметь составные индексы.
Несмотря на то, что нужно поддерживать больше индексов, это дает прямые ответы на ваши запросы без проблемных вычислений, необходимых для пересечения. Я имею в виду, что вы делаете это с более чем 3,5 миллиардами записей, это плохо кончится.
Подход составного индекса возлагает бремя обслуживания на сторону вставки/обновления, что намного лучше, чем на стороне запроса. Даже если индексы лишь частично выполняют запросы в любой момент времени.
Кажется, что пересечение MongoDB стало более продвинутым:
Как правило, каждое пересечение индексов включает два индекса; однако MongoDB может использовать множественные/вложенные пересечения индексов для разрешения запроса.
http://docs.mongodb.org/manual/core/index-intersection/ а>
Таким образом, даже если он может использовать более двух индексов, использование 3 пересечений все равно приведет к возникновению вложенного пересечения, что звучит не очень приятно.
Я ответил на аналогичный вопрос некоторое время назад, когда 10gen сказал, что пересечение секций - это, по сути, последнее средство, а не то, что желательно.
person
Sammaye
schedule
05.05.2015