Mongodb数据库教程第八节 - 索引
作者:互联网
前言
这一节我们来说一下索引 索引的主要作用就是用来提高查询效率的 不管在关系型数据库 或者实在非关系型数据库中都存在索引的概念
如果没有索引,MongoDB在读取数据时必须扫描集合中的每个文件并选取那些符合查询条件的记录。
这种扫描全集合的查询效率是非常低的,特别在处理大量的数据时,查询可以要花费几十秒甚至几分钟,这对网站的性能是非常致命的。
索引是特殊的数据结构,索引存储在一个易于遍历读取的数据集合中,索引是对数据库表中一列或多列的值进行排序的一种结构
方法
- createIndex()
开始
我们先插入一些数据 创建一个集合
db.collection1.insert([{
name:"lwx",
age:18,
gender:"男"
},{
name:"zs",
age:20,
gender:"男"
},{
name:"xiaohong",
age:20,
gender:"女"
}])
我们这里现在是没有索引的
我们先创建一个索引
我们的 _id 默认就已经拥有了索引
我们这里为我们的name创建索引
这里可以指定是降序索引 还是升序索引 升序 1 降序 -1
db.collection1.createIndex({name:1})
这个时候我们可以看到索引已经创建成功了 这是最简单的索引创建方式 只要我们去查询这个列就会提高效率 一般数据越多 效率也越明显 但是随着数据越来愈大 如果索引创建不当 同时也会影响效率 并不是说创建的越多越好 索引需要维护 也是占据空间 为什么索引能够提高效率呢 这是由于其内部在算法结构
我们插入50000条数据
for(var i = 0 ; i < 50000 ; i++){
db.collection1.insert([{
name:"lwx"+i,
age:18,
gender:"男"
},{
name:"zs",
age:20,
gender:"男"
},{
name:"xiaohong",
age:20,
gender:"女"
}])
}
我们这个是 collection1 的数据 在创建一个 collection2 的集合 增加50000条数据 不创建索引 来比较一下
for(var i = 0 ; i < 50000 ; i++){
db.collection2.insert([{
name:"lwx"+i,
age:18,
gender:"男"
},{
name:"zs",
age:20,
gender:"男"
},{
name:"xiaohong",
age:20,
gender:"女"
}])
}
下面我们来查询一下 两个集合中的name
这是有索引的
db.collection1.find({name:"lwx49805"})
这是没有索引的
db.collection2.find({name:"lwx49805"})
看到之间的差距的吗 现在数据还不是特别大 索引索引的掌握是很有必要的
同时我们也可以创建多个索引一块
也成为组合索引 复合索引 在使用的时候要给两个条件一起使用
db.collection1.createIndex({name:1,age:1})
再来看看其他方法
- 创建索引会阻塞其他数据库操纵 加上background:true这个就代表可以后台运行
db.collection1.createIndex({age:1},{background:true})
创建唯一索引
- 使用这个属性可以约束我们的字段值不能够重复
db.collection1.createIndex({gender:1},{unique:true})
结语
这节主要说了索引的使用 希望能够掌握~
标签:教程,name,Mongodb,age,第八节,db,索引,collection1,gender 来源: https://blog.csdn.net/qq_39057639/article/details/100539749