温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

MongoDB中索引的一点记录

发布时间:2020-05-23 13:45:55 来源:网络 阅读:872 作者:shayang88 栏目:MongoDB数据库

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

首先来看表的说明:

MongoDB中索引的一点记录

注意高亮出的索引:

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();

MongoDB中索引的一点记录


所以在这里说明几点:
1)、尽量避免以灵活的参数的形式传递排序规则,如果数据比较多的话,却没有建立相关索引,容易产生问题。
2)、修改了排序规则,要检查索引,通过explain来测试一下。
3)、使用已有索引过滤掉尽量多的数据再排序,同时尽力保留limit限制,这个很重要。


向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI