博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
MongoDB中索引的一点记录
阅读量:6678 次
发布时间:2019-06-25

本文共 767 字,大约阅读时间需要 2 分钟。

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

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

转载地址:http://hbyao.baihongyu.com/

你可能感兴趣的文章
matlab之图像处理(2)
查看>>
javascript JSON
查看>>
Codeforces 839D Winter is here【数学:容斥原理】
查看>>
在js中怎样获得checkbox里选中的多个值?
查看>>
基于AllegroGraph实现Protege设计知识库模型的存储步骤
查看>>
线程中释放锁的方式
查看>>
VM环境下Linux虚拟机扩展存储空间操作方法总结
查看>>
PDB文件:每个开发人员都必须知道的
查看>>
深入理解生产者消费者
查看>>
EL表达式获取参数值${param.name}等
查看>>
Is there anyway to discover which ip addresses are connected to the db?
查看>>
远程桌面不能复制粘贴的解决办法
查看>>
实战案例解析电商对抗羊毛党的策略与技术
查看>>
iOS开发-UITapGestureRecognizer手势
查看>>
tcpdump wireshark 实用过滤表达式(针对ip、协议、端口、长度和内容) 实例介绍...
查看>>
C#.net调用axis2webService
查看>>
NOIP2010乌龟棋[DP 多维状态]
查看>>
Linux 系统中用户切换(su user与 su - user 的区别)
查看>>
微信订阅号消息回复测试
查看>>
数据库 Proc编程二
查看>>