• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    MongoDB创建一个索引而性能提升1000倍示例代码

    MongoDB 创建索引的语法

    1.为普通字段添加索引,并且为索引命名

    db.集合名.createIndex( {"字段名": 1 },{"name":'idx_字段名'})

    说明: (1)索引命名规范:idx_构成索引的字段名>。如果字段名字过长,可采用字段缩写。

    (2)字段值后面的 1 代表升序;如是 -1 代表 降序。

    2.为内嵌字段添加索引

    db.集合名.createIndex({"字段名.内嵌字段名":1},{"name":'idx_字段名_内嵌字段名'})

    3.通过后台创建索引

    db.集合名.createIndex({"字段名":1},{"name":'idx_字段名',background:true})

    4:组合索引

    db.集合名.createIndex({"字段名1":-1,"字段名2":1},{"name":'idx_字段名1_字段名2',background:true})

    5.设置TTL 索引

    db.集合名.createIndex( { "字段名": 1 },{ "name":'idx_字段名',expireAfterSeconds: 定义的时间,background:true} )

    说明 :expireAfterSeconds为过期时间(单位秒)

    MongoDB创建索引性能提升1000倍

    上面我们介绍了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与sql关系型数据比较
    • mongodb使用c#驱动数据插入demo
    • c#操作mongodb插入数据效率
    • mongodb实现数组对象求和方法实例
    • 如何优雅的在一台vps(云主机)上面部署vue+mongodb+express项目
    • MongoDB中唯一索引(Unique)的那些事
    • MongoDB特点与体系结构等简介
    • pyspark操作MongoDB的方法步骤
    • Docker容器化部署尝试——多容器通信(node+mongoDB+nginx)
    • mongodb的写操作
    上一篇:通用MapReduce程序复制HBase表数据
    下一篇:MongoDB特点与体系结构等简介
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

    MongoDB创建一个索引而性能提升1000倍示例代码 MongoDB,创建,一个,索引,而,