scanAndOrder: true
i förklara-utmatningen indikerar att frågan måste hämta dokumenten och sedan sortera dem i minnet innan utdata returneras. Detta är en dyr operation och kommer att ha en inverkan på prestandan för din fråga.
Förekomsten av scanAndOrder: true
samt skillnaden i nscanned
ett n
i förklara-utgången indikerar att frågan inte använder ett optimalt index. I det här fallet verkar det behöva göras en samlingsskanning. Du kanske kan lindra detta problem genom att inkludera indexnycklarna i din sort
kriterier. Från mina tester:
db.posts.find({hashtags: /^noticias/ }).limit(15).sort({hashtags:1, rank : -1}).explain()
Kräver ingen skanning och beställning och returnerar n
och nscanned
av antalet poster du letar efter. Detta skulle också innebära sortering på hashtags
nyckel, som kan vara användbar eller inte, men bör öka prestandan för frågan.