2012-05-29 4 views
0

Если у меня есть коллекция, которую я запрос, основанный на полях _ID и CreationTimestamp.O, как показано ниже:MongoDB индекс запроса

var _query = Query.And(
Query.EQ("_id", "TheId"), 
    Query.GT("CreationTimestamp.0", DateTimeOffset.UtcNow.AddMinutes(-15).UtcTicks)); 

Должен ли я создать составной индекс на обоих этих полях? Я знаю, что _id по умолчанию имеет индекс.

Ищу руководство по лучшей практике т.е. создать составной индекс для обоих полей или просто создать индекс для CreationTimestamp.O как их уже индекс по _ID

ответ

3

Там не много пользы в создании индекса соединения здесь , Так как селективность автосозданного индекса на поле _id равна 1 (это уникальный индекс), нет никаких причин иметь какой-либо составной индекс с префиксом. Единственное возможное преимущество может заключаться в том, что MongoDB может использовать covered index для этого запроса и, возможно, ускорить все (вам нужно проверить свои данные, чтобы это доказать).