共计 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,如下图所示。
系统需要查询此表最近的变动情况,即需要抓取新增数据量和修改的数据量。
查询语句如下:
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)
上述就是丸趣 TV 小编为大家分享的怎么在 MongoDB 中创建索引了,如果刚好有类似的疑惑,不妨参照上述分析进行理解。如果想知道更多相关知识,欢迎关注丸趣 TV 行业资讯频道。
向 AI 问一下细节