Когда индексировать на нескольких клавишах в MongoDB

StackOverflow https://stackoverflow.com/questions/3016858

  •  26-09-2019
  •  | 
  •  

Вопрос

Скажем, у меня есть документ товара: Цена и: Кол-вольные поля. Иногда я хочу найти все документы, соответствующие данному: цена и: кол-во, и в другое время это будет либо: цена самостоятельно или: кол-во самостоятельно.

Я уже индексировал: цена: цена и: qty, но мне также нужно создать сложный индекс как на объединении, либо достаточно однозначные показатели?

Редактировать: Я нашел эту статью на сайте MongoDB очень полезным:

http://www.mongodb.org/display/docs/indexing+advice+ande+faq.

Это было полезно?

Решение

Индекс включен price помогает с запросами на price. Отказ Индекс включен qty помогает с запросами на qty. Отказ Индекс включен price а также qty помогает с запросами на price И запросы price а также qty. Отказ Итак, это как получить два индекса по цене одного. Это не поможет запрограммировать на qty, хоть.

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

Как правило, если вы делаете запрос на x, y, а также z, у вас должен быть индекс, как {x:1, y:1, z:1}. Отказ Этот индекс быстро сделает следующие запросы:

db.foo.find({x : ..., y : ..., z : ...})
db.foo.find({x : ..., y : ...})
db.foo.find({x : ...})

Это не сделает эти запросы быстро:

db.foo.find({y : ..., z : ...})
db.foo.find({y : ...})

Таким образом, убедитесь, что ваш запрос имеет начальную клавишу индекса в нем.

Другие советы

Если вам нужно: цена самостоятельно или: кол-во самостоятельно, тогда сложный индекс не будет работать.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top