scanAndOrder: true
в изхода за обяснение показва, че заявката трябва да извлече документите и след това да ги сортира в паметта, преди да бъде върнат изходът. Това е скъпа операция и ще окаже влияние върху ефективността на вашата заявка.
Съществуването на scanAndOrder: true
както и разликата в nscanned
един n
в изхода за обяснение показва, че заявката не използва оптимален индекс. В този случай изглежда, че трябва да се направи сканиране на колекция. Може да успеете да облекчите този проблем, като включите индексните ключове във вашия sort
критерии. От моето тестване:
db.posts.find({hashtags: /^noticias/ }).limit(15).sort({hashtags:1, rank : -1}).explain()
Не изисква сканиране и поръчка и връща n
и nscanned
от броя записи, които търсите. Това също би означавало сортиране по hashtags
ключ, който може или не може да бъде полезен за вас, но трябва да повиши производителността на заявката.