MongoDB индексирует несколько полей

Я прочитал главу об индексах в MongoDB в книге действий, и мне было интересно, может ли кто-нибудь расширить то, о чем там говорится в отношении индексов.

Если у меня есть индекс, который охватывает a,b,c,d,e, и я запрашиваю a,b,c, используется индекс. Что произойдет, если я запрошу a,c,e? Используется ли индекс только для запроса a или он используется при запросе других полей?

В этом случае имеет смысл также иметь индекс a,c,e. Я спрашиваю, потому что у меня есть внешний интерфейс, который ссылается на эти поля, где пользователи могут создать запрос в произвольной форме (может быть a,b,c,f). Нужен ли мне индекс для всех возможных вариантов, которые могут появиться?


person Thomas Mitchell    schedule 02.03.2013    source источник


Ответы (1)


Составные индексы в MongoDB работают по префиксному методу.

Таким образом, для индекса a,b,c,d,e a и a,b будут считаться префиксами ( http://docs.mongodb.org/manual/core/indexes/#id5 ), поскольку такие запросы как к a,b,c, так и к a,c,e должны давать использование индекса; что касается того, эффективно ли a,c,e использует индекс, это совсем другой вопрос.

Я спрашиваю, потому что у меня есть внешний интерфейс, который ссылается на эти поля, где пользователи могут создать запрос в произвольной форме (a,b,c,f может быть одним из них). Нужен ли мне индекс для всех возможных вариантов, которые могут появиться?

Хм, если a всегда определяется первым полем, то, вероятно, нет (конечно, explain было бы лучше здесь в вашем наборе данных), иначе вам могут потребоваться некоторые комбинации, да.

person Sammaye    schedule 02.03.2013
comment
Ах, я забыл о explain. Я проведу некоторое тестирование после добавления индекса a,b,c,d,e и посмотрю, как это повлияет на ситуацию. - person Thomas Mitchell; 02.03.2013