Я работаю с MongoDB и хочу отобразить последние 10 записей в коллекции, которые должны быть упорядочены по счету.Проблема в том, что существует около 2 миллионов записей, поэтому каждый запрос занимает 5-7 секунд.
Все работало довольно хорошо, когда база данных была меньше, но возникали проблемы с увеличением размера.Я проверил .explain('executionStats')
и заметил, что в результате есть nReturened: 10
и totalDocsExamined: 1959933
, что означает, что он проходит всю базу данных, чтобы вернуть последние 10 записей.(также totalKeysExamined: 0
, если кому-то нужна эта информация)
Поисковый запрос выглядит следующим образом: db.logs.find({}).sort({"score":-1}).limit(10).toArray()
Этапы запроса COLLSCAN, SORT_KEY_GENERATOR, SORT
Я знаю, что find({})
проходитвся БД, затем сортировка и получение последних 10 результатов.Но какой должен быть лучший способ ускорить процесс?