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 balancer的使用详解
Apr 30 MongoDB
MongoDB 常用的crud操作语句
Jun 20 MongoDB
MongoDB orm框架的注意事项及简单使用
Jun 20 MongoDB
mongodb的安装和开机自启动详细讲解
Aug 02 MongoDB
mongodb数据库迁移变更的解决方案
Sep 04 MongoDB
springboot + mongodb 通过经纬度坐标匹配平面区域的方法
Nov 01 MongoDB
SpringBoot系列之MongoDB Aggregations用法详解
Feb 12 MongoDB
MongoDB使用场景总结
Feb 24 MongoDB
mongoDB数据库索引快速入门指南
Mar 23 MongoDB
MongoDB修改oplog大小的四种方法
Apr 11 MongoDB
MongoDB数据库部署环境准备及使用介绍
一次线上mongo慢查询问题排查处理记录
Mar 18 #MongoDB
SpringBoot 整合mongoDB并自定义连接池的示例代码
Feb 28 #MongoDB
剖析后OpLog订阅MongoDB的数据变更就没那么难了
MongoDB使用场景总结
SpringBoot系列之MongoDB Aggregations用法详解
MongoDB连接数据库并创建数据等使用方法
You might like
Smarty结合Ajax实现无刷新留言本实例
2007/01/02 PHP
PHP Google的translate API代码
2008/12/10 PHP
如何取得中文字符串中出现次数最多的子串
2013/08/08 PHP
PHP FATAL ERROR: CALL TO UNDEFINED FUNCTION BCMUL()解决办法
2014/05/04 PHP
php中数据库连接方式pdo和mysqli对比分析
2015/02/25 PHP
php基于curl重写file_get_contents函数实例
2016/11/08 PHP
phpMyAdmin无法登陆的解决方法
2017/04/27 PHP
PHP生成随机数的方法总结
2018/03/01 PHP
JS函数验证总结(方便js客户端输入验证)
2010/10/29 Javascript
Jquery上传插件 uploadify v3.1使用说明
2012/06/18 Javascript
jQuery中bind,live,delegate与one方法的用法及区别解析
2013/12/30 Javascript
JS 获取鼠标左右键的键值方法
2014/10/11 Javascript
jquery获取及设置outerhtml的方法
2015/03/09 Javascript
使用requestAnimationFrame实现js动画性能好
2015/08/06 Javascript
javascript中$(function() {});写与不写有哪些区别
2015/08/10 Javascript
解析JavaScript实现DDoS攻击原理与保护措施
2016/12/26 Javascript
JavaScript使用delete删除数组元素用法示例【数组长度不变】
2017/01/17 Javascript
JavaScript函数基础详解
2017/02/03 Javascript
angular实现图片懒加载实例代码
2017/06/08 Javascript
jQuery实现拼图小游戏(实例讲解)
2017/07/24 jQuery
JavaScript实现联动菜单特效
2020/01/07 Javascript
简单介绍Python中的几种数据类型
2016/01/02 Python
python魔法方法-属性访问控制详解
2016/07/25 Python
Django中使用celery完成异步任务的示例代码
2018/01/23 Python
python3.5 tkinter实现页面跳转
2018/01/30 Python
Python+selenium实现自动循环扔QQ邮箱漂流瓶
2018/05/29 Python
Python实现从SQL型数据库读写dataframe型数据的方法【基于pandas】
2019/03/18 Python
Python自动化运维之Ansible定义主机与组规则操作详解
2019/06/13 Python
Django shell调试models输出的SQL语句方法
2019/08/29 Python
贺卡寄语大全
2014/04/11 职场文书
大学生赌博检讨书
2014/09/22 职场文书
敬业奉献模范事迹材料
2014/12/24 职场文书
企业工会工作总结2015
2015/05/13 职场文书
2016年寒假社会实践活动心得体会
2015/10/09 职场文书
三严三实·严以修身心得体会
2016/01/15 职场文书
B站评分公认最好看的动漫,你的名字评分9.9,第六备受喜欢
2022/03/18 日漫