MongoDB数据库的索引管理

本文通过实战案例介绍MongoDB中索引的重要性及其管理方法,包括普通索引和唯一索引的创建与应用,展示了索引如何显著提高查询效率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

众所众知索引在数据库查询中起到举足轻重的作用,它可以加快查询的速度。现在我就来说一下非关系型数据库MongoDB里面的索引管理。首先不管是关系型数据库还是非关系型数据库,索引在数据量庞大的时候才能体现出来,所以我先建一个数据量稍微大一点集合,截图如下:

c2集合里面添加了100条数据(感觉数据还是很少)。

首先我们不使用索引才查询,使用命令db.集合名.find({age:***})用age条件来查,截图如下:

使用explain函数来查询一下时间,截图如下:

我来解释一下这里面的一些属性,nscannedObject:99说明查询的时候扫描了99条数据,也就是说把整个集合给全部扫描了一遍。至于这里的millis:0我认为是当时给集合里面添加数据的时候虽然添加了100条,但还是太少了,而且这里显示没有创建索引。

接下来我们添加一个普通索引,使用命令db.集合名.ensureIndex({age:1}),截图如下:

添加成功后,我们再来查询一下,截图如下:

现在和上面形成了鲜明的对比。这里使用了普通的索引,所以nscannedObjects:1,说明只扫描了一条数据.

接下来我来讲一下创建唯一索引,创建唯一索引之前,要先把之前的索引删除了,使用命令db.集合名.dropIndex({条件}),截图如下:

删除之前的那个普通索引之后,使用命令db.集合名.ensureIndex({age:***},{unique:true})用age条件来创建唯一索引,截图如下:

添加唯一索引成功之后,再来查询一下,截图如下:

感觉好像和之前的普通索引查询效果一样。

但是添加唯一索引之后,就不能添加和age=20相同的记录了,否则报错,截图如下:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值