前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Mongodb索引操作

Mongodb索引操作

原创
作者头像
陈不成i
修改2021-06-18 14:42:24
4280
修改2021-06-18 14:42:24
举报
文章被收录于专栏:ops技术分享ops技术分享

一.简介

数据库的索引类似书籍的目录索引一样,有了索引,看书的时候就不用翻遍整本书,就可以根据目录页数直接跳转到目标内容,提高阅读和查询效率。数据库的索引也是如此,它的作用就是用来提升查询速度的,有了索引,MongoDB查询的时候就可以索引中找到条目后,直接跳转到目标collection的位置。

二.默认索引

检索系统索引时,可以发现,mongodb默认的为每个集合都建立了默认的”_id”索引,作为检索时参照的索引。即我们平时的find操作都是默认根据”_id”这个索引来查找的

代码语言:javascript
复制
> db.system.indexes.find();{ "v" : 1, "key" : { "_id" : 1 }, "ns" : "kaiye.c1", "name" : "_id_" }{ "v" : 1, "key" : { "_id" : 1 }, "ns" : "kaiye.c2", "name" : "_id_" }{ "v" : 1, "key" : { "_id" : 1 }, "ns" : "kaiye.c3", "name" : "_id_" }

三.为什么要建自定义索引

先往一集合c4中添加一百万条数据,后检索age=100的那条数据,并调用explain函数计算检索过程中信息,发现在无排序,无自定义索引的情况下,没查询一条数据,需要扫描一百万条数据,并且只是一个简单查询就耗费了546毫秒,这在大数据量的业务系统中是难以接受的。

代码语言:javascript
复制
for(var i=0;i<1000000;i++){    db.c4.insert({name:"diao",age:i})}
file
file

四.自定义索引有无的对比

首先为c4集合的name字段建立索引,关键字为ensureIndex,语法为db.c4.ensureIndex({age:1}),之后再执行查询age=100的操作,检索信息如下图

此时可以发现,在为age字段建立索引后进行一次简单的查询,此时遍历的条数只有一条,并且耗时几乎为0,相比无索引的检索,效果可见一般。

file
file

五.对索引的其他操作

1.查询索引的相关信息 db.集合.stats();

2.删除索引,删除集合,也会将集合中的索引全部删除 db.集合.dropIndex({索引字段:1})

3.建立唯一索引:唯一索引的意思是,当某一字段被设置为唯一索引后,该字段在所在集合中,不允许有相同的值存在,即值是唯一的,比如以上案例,再插入age=100的一条文档,则会有报错信息出来了。 db.集合.ensureIndex({age:1},{unique:true})

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一.简介
  • 二.默认索引
  • 三.为什么要建自定义索引
  • 四.自定义索引有无的对比
  • 五.对索引的其他操作
相关产品与服务
数据库
云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档