O
scanAndOrder: true
na saída de explicação indica que a consulta precisa recuperar os documentos e classificá-los na memória antes que a saída seja retornada. Esta é uma operação cara e terá um impacto no desempenho de sua consulta. A existência de
scanAndOrder: true
bem como a diferença em nscanned
um n
na saída de explicação indica que a consulta não está usando um índice ideal. Nesse caso, parece ser necessário fazer uma varredura de coleção. Você pode aliviar esse problema incluindo as chaves de índice em seu sort
critério. Do meu teste:db.posts.find({hashtags: /^noticias/ }).limit(15).sort({hashtags:1, rank : -1}).explain()
Não requer digitalização e pedido e retorna
n
e nscanned
do número de registros que você está procurando. Isso também significaria classificar nas hashtags
key, que pode ou não ser útil para você, mas deve aumentar o desempenho da consulta.