开发者社区> 问答> 正文

mongodb组合索引优化问题

最近在优化一个接口,数据是从mongodb里获取的,查询时间平均在1.5秒,数据总量在100W左右,表中大概有25个字段,现在想对这个查询接口进行优化,提升查询速度。
查询条件:
{type:1,status:5,score:{$gte:5},sitemapId:{$in:[38621,44,46,38820,121337,111824,2,30707,123920,40380,122106,122107,122108]}}
排序:通过时间降序排列{displayTime:-1}
获取数据量为:20
解释一下这里的查询条件:type值有多个,这里只取type=1;status值范围为1-5,这里取status=5;score值范围为1-10,这里取score>5的值;sitemapId值为[38621,44,46,38820,121337,111824,2,30707,123920,40380,122106,122107,122108]中的任意个
附上explain信息:
2
可以看到查询使用到了索引,但是时间还是有点长,想求教一下该怎么对这个进行优化。谢谢

展开
收起
落地花开啦 2016-02-07 09:52:13 2662 0
1 条回答
写回答
取消 提交回答
  • 喜欢技术,喜欢努力的人

    这个查询使用了scanAndOrder,该操作会消耗大量内存cpu资源,因为排序是在内存中执行的。
    复合索引的顺序改下可能可以解决:
    mongodb 复合索引字段顺序: 精确查找的字段,可能排序的字段;
    查询某个范围的字段,避免使用scanAndOrder ,scanAndOrder 会在内存中执行,而且慢,而且耗费CPU

    2019-07-17 18:38:51
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
开源数据库 MongoDB 专场 MongoDB疑难杂症分析及优化 立即下载
阿里云MongoDB云服务构建 立即下载
饿了么高级架构师陈东明:MongoDB是如何逐步提高可靠性的 立即下载