У меня есть коллекция с 60000000 записей. При выполнении этого запроса требуется 5 мин.
collection.Find(f => f.EVN_EVT_PRS_FIRST_NAME.EndsWith("yasmine"))
.SortBy(o=>o.EVN_EVT_PRS_FIRST_NAME).Skip(1600000).Limit(20).ToList();
Производит:
[
{ $match: { $text: { $search: \"sharma\" } } },
{ $skip: 160000 },
{ $limit: 20 },
{ $sort : { EVN_EVT_PRS_FIRST_NAME : -1 } }
]
этот запрос занимает 6 минут
Есть ли способ получить данные быстрее.
skip
, потому что это очень медленно. Единственный другой случай, который у вас есть, - это, вероятно, должна быть сегментированная коллекция такого размера и с ключом сегмента, который разумно распределял бы нагрузку. Для @DanielleSummers. это поиск$text
, поэтому должен быть индекс, иначе запрос просто выдаст ошибку. - person Neil Lunn   schedule 14.06.2018