MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

A consulta de prefixo simples do Mongodb com regex e classificação é lenta


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.