MongoDB中索引的一点记录

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

成都创新互联长期为超过千家客户提供的网站建设服务,团队从业经验10年,关注不同地域、不同群体,并针对不同对象提供差异化的产品和服务;打造开放共赢平台,与合作伙伴共同营造健康的互联网生态环境。为平和企业提供专业的网站设计制作、成都网站建设平和网站改版等技术服务。拥有十多年丰富建站经验和众多成功案例,为您定制开发。

首先来看表的说明:

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限制,这个很重要。


文章名称:MongoDB中索引的一点记录
网站路径:http://bzwzjz.com/article/joieio.html

其他资讯

Copyright © 2007-2020 广东宝晨空调科技有限公司 All Rights Reserved 粤ICP备2022107769号
友情链接: 网站建设公司 成都网站制作 网站建设 成都网站设计 成都网站设计 成都网站建设 网站制作 重庆企业网站建设 品牌网站建设 网站制作 成都网站建设公司 四川成都网站制作 成都网站建设 重庆网站建设 网站建设改版 高端网站建设 成都网站制作 成都网站建设 成都h5网站建设 高端品牌网站建设 重庆网站设计 手机网站制作