#sql #performance #mongodb #mongodb-.net-driver
#sql #Производительность #mongodb #mongodb-.net-driver
Вопрос:
Я пытаюсь запросить базу данных с более чем 50 миллионами записей. Запрос меняется каждый раз, когда требуется так много времени для подсчета записей. Для приведенного ниже запроса:
var query =
from e in this.collection.AsQueryable<SocialRecord>()
where e.TermMonitorIds.Contains(term) amp;amp; sources.Contains(e.SocialType) amp;amp; e.DateCreated >= fr amp;amp; e.DateCreated <= to
select e;
Я создал индекс на
{
"TermMonitorIds" : 1,
"SocialType" : -1,
"DateCreated" : -1
}
Могу ли я в любом случае повысить производительность?
Комментарии:
1. Есть ли у этого запроса индекс? Подобный запрос adhoc, возможно, не сможет использовать преимущества индексов. Вы должны посмотреть на вывод из .Explain() на курсор, возвращаемый драйвером.
2. По каким полям мне нужно создать индекс? Я создал составной индекс для «TermMonitorIds», «SocialType», «DateCreated»
3. @DheerajPalagiri: можете ли вы включить вывод из an
explain()
в запрос? Недостаточно информации, чтобы понять, почему этот запрос выполняется медленно. Кроме того, какую версию MongoDB вы используете?