怎么在MongoDB中创建索引

57次阅读
没有评论

共计 1379 个字符,预计需要花费 4 分钟才能阅读完成。

自动写代码机器人,免费开通

这期内容当中丸趣 TV 小编将会给大家带来有关怎么在 MongoDB 中创建索引,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。

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,如下图所示。

怎么在 MongoDB 中创建索引

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

查询语句如下:

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

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

怎么在 MongoDB 中创建索引

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

怎么在 MongoDB 中创建索引

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

怎么在 MongoDB 中创建索引

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

执行添加索引的命令:

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

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

怎么在 MongoDB 中创建索引

上述就是丸趣 TV 小编为大家分享的怎么在 MongoDB 中创建索引了,如果刚好有类似的疑惑,不妨参照上述分析进行理解。如果想知道更多相关知识,欢迎关注丸趣 TV 行业资讯频道。

向 AI 问一下细节

正文完
 
丸趣
版权声明:本站原创文章,由 丸趣 2023-12-04发表,共计1379字。
转载说明:除特殊说明外本站除技术相关以外文章皆由网络搜集发布,转载请注明出处。
评论(没有评论)