2014-12-04 7 views
2

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

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

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

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

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

Спасибо.

ответ

6

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

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

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

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

Да, так оно и есть.

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

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

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

 Смежные вопросы

  • Нет связанных вопросов^_^