Недавно заинтересовался MongoDB и на выходные сел почитать, что это такое, и столкнулся с тем, что не совсем понимаю, как устроены индексы в Mongo
Разбирается запрос:
db.users.find({"age" : {"$gte" : 25, "$lte" : 35}}).
sort({"username" : 1}).limit(100)
и советуется брать следующий индекс {"username" : 1, "age" : 1}, вместо
{"age":1,"username":1}.
Если количество записей в базе N(N>=10^6), a количество подходящих записей K(K=N/10), то в первом случае количество чтений с внешней памяти (в худшем случае) будет O(N), а во втором - K+время на сортировку К элементов ~O(K*log(K)), что, кажется, гораздо быстрее, за N чтений из внешней памяти. Поправьте, если где неправ.
Заранее спасибо!