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之安全认证
Jun 26 MongoDB
MongoDB安装使用并实现Python操作数据库
Jun 28 MongoDB
MongoDB日志切割的三种方式总结
Sep 15 MongoDB
MongoDB使用场景总结
Feb 24 MongoDB
剖析后OpLog订阅MongoDB的数据变更就没那么难了
Feb 24 MongoDB
MongoDB数据库部署环境准备及使用介绍
Mar 21 MongoDB
MongoDB支持的索引类型
Apr 11 MongoDB
MongoDB修改oplog大小的四种方法
Apr 11 MongoDB
Mongodb 迁移数据块的流程介绍分析
Apr 18 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
十天学会php(1)
2006/10/09 PHP
初次接触php抽象工厂模式(Elgg)
2010/03/21 PHP
PHP扩展模块Pecl、Pear以及Perl的区别
2014/04/09 PHP
WordPress主题中添加文章列表页页码导航的PHP代码实例
2015/12/22 PHP
php同时使用session和cookie来保存用户登录信息的实现代码
2016/05/13 PHP
PHP基于curl后台远程登录正方教务系统的方法
2016/10/14 PHP
php实现数字补零的方法总结
2018/09/12 PHP
jquery 操作DOM案例代码分享
2012/04/05 Javascript
jquery html动态生成select标签出问题的解决方法
2013/11/20 Javascript
JS将光标聚焦在文本最后的实现代码
2014/03/28 Javascript
jQuery拖动布局其结果保存到数据库
2015/10/09 Javascript
jQuery EasyUI Tab 选项卡问题小结
2016/08/16 Javascript
Node.js编写CLI的实例详解
2017/05/17 Javascript
仿京东快报向上滚动的实例
2017/12/13 Javascript
详解如何构建Promise队列实现异步函数顺序执行
2018/10/23 Javascript
微信小程序动画组件使用解析,类似vue,且更强大
2019/08/01 Javascript
vue获取data数据改变前后的值方法
2019/11/07 Javascript
JavaScript Reflect Metadata实现详解
2019/12/12 Javascript
js实现头像上传并且可预览提交
2020/12/25 Javascript
使用pyecharts无法import Bar的解决方案
2020/04/23 Python
Python中一行和多行import模块问题
2018/04/01 Python
对Python 内建函数和保留字详解
2018/10/15 Python
django session完成状态保持的方法
2018/11/27 Python
django与vue的完美结合_实现前后端的分离开发之后在整合的方法
2019/08/12 Python
Python如何使用BeautifulSoup爬取网页信息
2019/11/26 Python
使用python无账号无限制获取企查查信息的实例代码
2020/04/17 Python
解决启动django,浏览器显示“服务器拒绝访问”的问题
2020/05/13 Python
美国家用电器和电子产品商店:Abt
2016/09/06 全球购物
英国女性化妆品收纳和家具网站:Beautify
2019/12/07 全球购物
美国家居装饰购物网站:Amanda Lindroth
2020/03/25 全球购物
数控技术专业推荐信
2013/11/01 职场文书
生育关怀行动实施方案
2014/03/26 职场文书
竞聘演讲稿开场白
2014/08/25 职场文书
2014年小学教导处工作总结
2014/12/19 职场文书
出纳2015年度工作总结范文
2015/10/14 职场文书
MySQL高速缓存启动方法及参数详解(query_cache_size)
2021/07/01 MySQL