Составной индекс в MongoDB улучшает многозначное совпадение (не сортировку)?

Документация кажется немного неясной по этому поводу.

1) В нем четко указано, что составные индексы улучшают производительность многополюсной сортировки (зависит от порядка и направления).

2) Есть одна фраза, которая заставляет меня думать, что она также улучшит многопольную MACH (аналогия sql: где a=1 и b=2 и c<5)

https://docs.mongodb.org/v3.0/tutorial/optimize-query-performance-with-indexes-and-projections/

Если запрос ищет несколько полей, создайте составной индекс.

это ничего не говорит о сортировке.

Так лучше ли составной индекс для полей a,b,c для сопоставления производительности, чем три однополевых индекса для таких запросов, как (где a=1 и b=2 и c<5)?

1 ответ

Решение

Да, создание составных индексов повышает производительность запросов.

Создайте индекс с одним ключом, если все запросы используют один и тот же ключ

Если для конкретной коллекции вы используете один ключ для соответствия, как where a=1

Создание сложных индексов для поддержки нескольких разных запросов

Если в вашем запросе используется один или несколько ключей, лучше использовать составные индексы.

db.sample.createIndex( { "a": 1, "b": 1, "c":1 } )

Вы можете запросить только по a, вы можете запросить в сочетании с b, а также вы можете запросить по a, b и c. Вы можете использовать метод объяснения (), чтобы узнать, какой план использует ваш запрос.

Пересечение индекса может также оптимизировать производительность ваших запросов. Он может поддерживать то, что составной индекс не поддерживает.

Другие вопросы по тегам