Помогает ли индексация в прогнозировании?
Я считаю, что единственный раз, когда это действительно поможет (определяется производительностью и т. д.), - это если запрос "покрыт": 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