Индексация и проекция MongoDB

У меня есть несколько вопросов о MongoDB:

(1) Помогает ли индексация проекции?

(2) Я присвоил коллекции несколько индексов и попытался запустить поиск с сортировкой, а затем использовать explain, он показывает индекс BtreeCursor в отсортированном поле.

Может ли быть так, что другие индексы помогли в части запроса, а explain просто не показал его, потому что он показывает только последний индекс, который помог найти?

Или explain должен показывать все индексы, которые помогают в запросах, сортировке и т. д.?

Спасибо.


person oikonomiyaki    schedule 04.12.2014    source источник


Ответы (1)


Помогает ли индексация в прогнозировании?

Я считаю, что единственный раз, когда это действительно поможет (определяется производительностью и т. д.), - это если запрос "покрыт": http://docs.mongodb.org/manual/tutorial/create-indexes-to-support-queries/

Так, например, если вы хотите запросить {d:1, e:2} и получить обратно {_id, t, e}, вы должны сделать:

db.t.ensureIndex({d:1 , e:1, _id:1, t:1});
db.t.find({d:1, e:2}, {_id:1, t:1, e:1});

И вывод этого запроса explain() покажет indexOnly как true, что означает, что он никогда не загружал документы с диска для возврата ответа.

Так что да, индексы могут помочь с прогнозированием при определенных обстоятельствах.

Я присвоил коллекции несколько индексов и попытался выполнить поиск с сортировкой, а затем использовать объяснение, он показывает индекс BtreeCursor в отсортированном поле.

Да, это так.

Может ли быть так, что другие индексы помогли в части запроса, а объяснение просто не показало его, потому что оно показывает только последний индекс, который помог найти?

Если вы стали жертвой пересечения индексов, вы должны использовать explain(true), чтобы показать все используемые планы индексов.

Стоит отметить, что отдельные индексы не используются для поиска и сортировки с пересечением, поэтому ответ здесь на самом деле нет: http://docs.mongodb.org/manual/core/index-intersection/#index-intersection-and-sort

person Sammaye    schedule 04.12.2014