При запросах к коллекции MongoDB с миллионами документов и фильтрации или сортировке по неиндексированным полям запросы выполняются слишком медленно, поскольку mongo необходимо сканировать всю коллекцию. В Mysql это возможно, выполнив выборку, отфильтровав только последние 40 тыс. Строк, например:
select c.name, c.age, c.address //another fields
from (select * from myTable order by id desc limit 40000) as c
where c.name = 'My name' //more and more filters
order by c.date_req desc
limit 25
. В этом SQL я получаю последние 40 тыс. Строк, а затем применяю логику фильтрации и сортировки, и она запускаетсябыстро, даже если в таблице миллионы строк.
В MongoDB я получаю хорошую производительность только при фильтрации или сортировке индексированных полей, в противном случае она работает слишком медленно. Я предполагаю, что не могу создать индекс в каждой области, так что я могу сделать в этом случае? Есть что-то похожее на MongoDB?