ITPub博客

首页 > IT职业 > IT生活 > MongoDB中索引的一点记录

MongoDB中索引的一点记录

IT生活 作者:devinw 时间:2021-09-09 10:27:03 0 删除 编辑


在MongoDB中使用了一个联合索引,发现了一些问题,记录一下,方便以后查阅!

首先来看表的说明:

wKiom1L95zyxvvZaAAOGvQeki6I411.jpg

注意高亮出的索引:

prop.lis_sta_1_prop.is_recom_-1_prop.re_t_-1_prop.post_t_-1,这4个字段分别是

帖子状态、推荐状态,推荐时间,发贴时间

测试了一下,有以下结果

可以使用上面索引的查询:

db.post.find({'prop.lis_sta'{$in[5]}}).sort({'prop.is_recom':-1,'prop.re_t':-1,'prop.post_t':-1}).explain();

db.post.find({'prop.lis_sta':5}).sort({'prop.is_recom':-1,'prop.re_t':-1,'prop.post_t':-1}).explain();

db.post.find({'prop.lis_sta'{$in[0,5]}}).sort({'prop.is_recom':-1,'prop.re_t':-1,'prop.post_t':-1}).limit(20).explain();

不可以使用上面索引的查询:

db.post.find({'prop.lis_sta'{$in[0,5]}}).sort({'prop.is_recom':-1,'prop.re_t':-1,'prop.post_t':-1}).explain();

wKioL1L96OyhbV_pAAElaIR42Xg779.jpg

所以在这里说明几点:

1)、尽量避免以灵活的参数的形式传递排序规则,如果数据比较多的话,却没有建立相关索引,容易产生问题。

2)、修改了排序规则,要检查索引,通过explain来测试一下。

3)、使用已有索引过滤掉尽量多的数据再排序,同时尽力保留limit限制,这个很重要。

©著作权归作者所有:来自51CTO博客作者shayang88的原创作品,如需转载,请注明出处,否则将追究法律责任

MongoDB 索引MongoDB


来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/2715/viewspace-2822141/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2019-08-16

  • 博文量
    83
  • 访问量
    760