https://www.cnblogs.com/xuliuzai/p/9965229.html的博文中我们介绍了MongoDB的常见索引的创建语法。部分同学还想看看MongoDB的威力到底有多大,所以,在这儿追加一个例子,感受一下索引的性能。

通过在某一字段上创建索引,从优化前的执行15.15S到优化后降至0.013S,性能提升了1000多倍。

此为实际生产中的一个真实案例,我们有一个集合QQStatements,其数据量为2604W,如下图所示。

系统需要查询此表最近的变动情况,即需要抓取新增数据量和修改的数据量。

查询语句如下:

db.QQStatements.find({
$or:
[
{Rec_CreateTime:{$gt: ISODate("2019-01-07 16")}}
,{Rec_ModifyTime:{$gt: ISODate("2019-01-07 16")}}
] } )

但此查询语句不理想,有时耗时25S,多次执行有缓存后也要15S左右,如下图:

查看此表,发现Rec_CreateTime字段建有索引,单独执行符合Rec_CreateTime 条件的语句,很快 0.1 S 内就执行完成。

而Rec_ModifyTime字段没有索引,单独执行符合Rec_ModifyTime条件的语句较慢,需要15S左右。

到这儿,就可以判读出问题是缺失索引,和开发同学确认后,此场景时常用,此字段需要添加索引。

执行添加索引的命令:

db.QQStatements.createIndex({"Rec_ModifyTime":1},{"name":'idx_Rec_ModifyTime',background:true})

Rec_ModifyTime字段添加索引后,整个语句执行降至0.013S(20S-->0.02S )

从上面可以看出在MongoDB数据库中索引很有必要,性能可以优化数百倍。

本文版权归作者所有,未经作者同意不得转载,谢谢配合!!!

最新文章

  1. 【虚拟机】在VMware中安装Server2008之后配置网络连接的几种方式
  2. cisco-log
  3. spring 多线程 注入 服务层 问题
  4. MAC下Eclipse的常用快捷键
  5. AngularJS学习之HTML DOM
  6. [转]javascript的urlencode
  7. 1.1 ASP.NET MVC简介
  8. sql思维
  9. CSS常用布局整理
  10. Linux Centos 7 使用yum安装 mysql5.7 (实验成功)
  11. 剑指offer中二进制中1的个数
  12. 微软CEO史蒂夫·鲍尔默(Steve Ballmer)在12个月内退休
  13. 修改TOMCAT服务器图标为应用LOGO
  14. markdown使用小结
  15. 用python计算圆周率
  16. Quartz 定时器任务调度配置(以及如何配置quartz启动执行一次)
  17. 看雪CTF第十题
  18. ionic打包报错Execution failed for task ':processDebugResources'
  19. POJ1417 True Liars 并查集 动态规划 (种类并查集)
  20. coreseek搜索

热门文章

  1. [Swift]LeetCode921.使括号有效的最少添加 | Minimum Add to Make Parentheses Valid
  2. Feign源码解析系列-核心初始化
  3. 熟悉使用Github,VS进行项目的开发(第二次作业)
  4. 记录eclipse安装SpringBoot插件及搭建SpringBoot项目
  5. 【Spark篇】---Spark中yarn模式两种提交任务方式
  6. JVM基础系列第2讲:Java 虚拟机的历史
  7. Spring Security构建Rest服务-1300-Spring Security OAuth开发APP认证框架之JWT实现单点登录
  8. asp.net core AuthenticationMiddleware 在WebApi中的的使用
  9. 2016年,总结篇 续 如何从 JQ 转到 VueJS 开发(一)
  10. RestTemplate的逆袭之路,从发送请求到负载均衡