Mongodb数据库教程第八节 - 索引
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Mongodb数据库教程第八节 - 索引,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2189字,纯文字阅读大概需要4分钟。
内容图文
前言
这一节我们来说一下索引 索引的主要作用就是用来提高查询效率的 不管在关系型数据库 或者实在非关系型数据库中都存在索引的概念
如果没有索引,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})
结语
这节主要说了索引的使用 希望能够掌握~
内容总结
以上是互联网集市为您收集整理的Mongodb数据库教程第八节 - 索引全部内容,希望文章能够帮你解决Mongodb数据库教程第八节 - 索引所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。