Составной индекс в 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. Вы можете использовать метод объяснения (), чтобы узнать, какой план использует ваш запрос.
Пересечение индекса может также оптимизировать производительность ваших запросов. Он может поддерживать то, что составной индекс не поддерживает.