mongoDB数据库索引快速入门指南


Posted in MongoDB onMarch 23, 2022

MongoDB 索引

索引通常能够极大的提高查询的效率,如果没有索引,MongoDB在读取数据时必须扫描集合中的每个文件并选取那些符合查询条件的记录。

这种扫描全集合的查询效率是非常低的,特别在处理大量的数据时,查询可以要花费几十秒甚至几分钟,这对网站的性能是非常致命的。

索引是特殊的数据结构,索引存储在一个易于遍历读取的数据集合中,索引是对数据库表中一列或多列的值进行排序的一种结构。

mongo可以通过创建索引来提高查询的速度     

1. 开始与准备数据

启动mongo并选择目标数据库

mongo

use test

然后准备一组数据(10万条数据,较大的数据量)

for(i=0;i<100000;i++){db.test.insert({name:'test'+i,age:i})}

mongoDB数据库索引快速入门指南

2. 创建索引前

查询一下name为"test90000"的数据。并使用explain方法来查看查询的性能。

db.test1.find({name:"test90000"}).explain('executionStats')

mongoDB数据库索引快速入门指南

这里可以看到查询花了53毫秒

3. 创建索引 createIndex

给字段name创建索引

db.test1.createIndex({name: 1})

mongoDB数据库索引快速入门指南

查看索引:

mongoDB数据库索引快速入门指南

给name创建索引之前,_id字段默认为索引,创建后集合有两个索引,"_id"和"name"。

4. 创建索引后

再次查找该条数据,并查看查询的性能,发现所用时间接近0毫秒。即设定索引后查询性能大大提升了。

db.test1.find({name:"test90000"}).explain('executionStats')

mongoDB数据库索引快速入门指南

5. 删除索引

db.test1.dropIndex({name:1})

查看之

db.test1.getIndexes()

mongoDB数据库索引快速入门指南

如图,只剩下了"_id"一个索引。"name"索引已被删除。

6.唯一索引与符合索引

①唯一索引

db.test1.createIndex({name: 1},{"unique":true})

mongoDB数据库索引快速入门指南

查看索引

db.test1.getIndexes()

mongoDB数据库索引快速入门指南

可以看到,unique为true。

设定为唯一索引后,该索引的值不能重复。
(这个特点也可以用于写爬虫时不想要某字段的重复数据时,达到去重的目的。)

如图插入一条name重复的数据时,会产生如下报错:

mongoDB数据库索引快速入门指南

即插入失败了。

②复合索引

创建多个索引的方式被称为复合索引。

首先删掉刚刚创建的索引name

db.test1.dropIndex({name:1})

然后一次创建name,age两个索引

db.test1.createIndex({'name':1,'age':1})

mongoDB数据库索引快速入门指南

处理海量数据时,在一定的规则下使用复合索引,可以大幅提升查询的性能。具体比较复杂,这里不再详解。

MongoDB 相关文章推荐
MongoDB orm框架的注意事项及简单使用
Jun 20 MongoDB
SpringBoot整合MongoDB的实现步骤
Jun 23 MongoDB
mongodb的安装和开机自启动详细讲解
Aug 02 MongoDB
mongodb清除连接和日志的正确方法分享
Sep 15 MongoDB
MongoDB日志切割的三种方式总结
Sep 15 MongoDB
关于CentOS 8 搭建MongoDB4.4分片集群的问题
Oct 24 MongoDB
springboot + mongodb 通过经纬度坐标匹配平面区域的方法
Nov 01 MongoDB
MongoDB误操作后使用oplog恢复数据
Apr 11 MongoDB
MongoDB数据库之添删改查
Apr 26 MongoDB
详解MongoDB排序时内存大小限制与创建索引的注意事项
May 06 MongoDB
NoSQL优缺点与MongoDB数据库简介
Jun 05 MongoDB
MongoDB数据库部署环境准备及使用介绍
一次线上mongo慢查询问题排查处理记录
Mar 18 #MongoDB
SpringBoot 整合mongoDB并自定义连接池的示例代码
Feb 28 #MongoDB
剖析后OpLog订阅MongoDB的数据变更就没那么难了
MongoDB使用场景总结
SpringBoot系列之MongoDB Aggregations用法详解
MongoDB连接数据库并创建数据等使用方法
You might like
风味层面去分析咖啡油脂
2021/03/03 咖啡文化
dedecms模版制作使用方法
2007/04/03 PHP
php解决约瑟夫环示例
2014/04/09 PHP
WordPres对前端页面调试时的两个PHP函数使用小技巧
2015/12/22 PHP
PDO::quote讲解
2019/01/29 PHP
鼠标滚轴控制文本框值的JS代码
2013/11/19 Javascript
浅析JavaScript事件和方法
2015/02/28 Javascript
JavaScript实现LI列表数据绑定的方法
2015/08/04 Javascript
bootstrapfileinput实现文件自动上传
2016/11/08 Javascript
bootstrap3-dialog-master模态框使用详解
2017/08/22 Javascript
JS基于递归实现网页版计算器的方法分析
2017/12/20 Javascript
vue.js实现只弹一次弹框
2018/01/29 Javascript
JS匿名函数和匿名自执行函数概念与用法分析
2018/03/16 Javascript
JavaScript累加、迭代、穷举、递归等常用算法实例小结
2018/05/08 Javascript
微信端调取相册和摄像头功能,实现图片上传,并上传到服务器
2019/05/16 Javascript
webpack4 SplitChunks实现代码分隔详解
2019/05/23 Javascript
js实现GIF图片的分解和合成
2019/10/24 Javascript
nuxt 路由、过渡特效、中间件的实现代码
2020/11/06 Javascript
Python中的进程分支fork和exec详解
2015/04/11 Python
python 采集中文乱码问题的完美解决方法
2016/09/27 Python
python urllib爬取百度云连接的实例代码
2017/06/19 Python
详解Python list 与 NumPy.ndarry 切片之间的对比
2017/07/24 Python
python调用xlsxwriter创建xlsx的方法
2018/05/03 Python
django ajax json的实例代码
2018/05/29 Python
python cookie反爬处理的实现
2020/11/01 Python
基于HTML5 Canvas 实现弹出框效果
2017/06/05 HTML / CSS
视图的作用
2014/12/19 面试题
护理自荐信
2013/10/22 职场文书
农村婚礼证婚词
2014/01/08 职场文书
哈弗商学院毕业生求职信
2014/02/26 职场文书
《飞向蓝天的恐龙》教学反思
2014/04/09 职场文书
2014教育局对照检查材料思想汇报
2014/09/23 职场文书
简单的离婚协议书范本
2014/11/16 职场文书
档案工作个人总结
2015/03/03 职场文书
springboot临时文件存储目录配置方式
2021/07/01 Java/Android
20180830晚上第一届KSL半决赛 雨神vs解冻(二龙 三炮解说)
2022/04/01 星际争霸