在MongoDB中创建一个索引而性能提升1000倍的小例子

在MongoDB中创建一个索引而性能提升1000倍的小例子,第1张

概述在https://www.cnblogs.com/xuliuzai/p/9965229.html的博文中我们介绍了MongoDB的常见索引的创建语法。部分同学还想看看MongoDB的威力到底有多大,所

在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数据库中索引很有必要,性能可以优化数百倍。

 

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

总结

以上是内存溢出为你收集整理的在MongoDB中创建一个索引而性能提升1000倍的小例子全部内容,希望文章能够帮你解决在MongoDB中创建一个索引而性能提升1000倍的小例子所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/1154009.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-01
下一篇 2022-06-01

发表评论

登录后才能评论

评论列表(0条)

保存