Mongodb学习笔记三(Mongodb索引操作及性能测试)

第三章 索引操作及性能测试


索引在大数据下的重要性就不多说了

下面测试中用到了mongodb的一个客户端工具Robomongo,大家可以在网上选择下载。

插入 测试数据

首先插入100万条测试数据

for(var i=1;i<1000000;i++){
var person={
Name:"jack"+i,
Age:i,
Address:["henan","wuhan"],
Course:[
{Name:"shuxue",Score:i},
{Name:"wuli",Score:i}
]
}
db.DemoTest.Person.insert(person)
}

性能分析函数(explain)

mongodb中给我们提供了一个关键字叫做“explain"做性能分析。

执行查询分析如下:

db.DemoTest.Person.find({Name:"jack5784124"}).explain()

从上图我们可以看出在没有建立索引的情况下,查询的时间大约是是615毫秒。

创建索引

db.TestCollection.Person.ensureIndex({Name:1})

-----1代表索引按照字母升序排列

查询如图:

从图上我们可以看出,查询时间变成了大约2毫秒,性能提高了几百倍。

 

唯一索引

和sqlserver一样都可以建立唯一索引,重复的键值自然就不能插入,在mongodb中的使用方法是:

db.TestCollection.Person.ensureIndex({Name:1},{"unique":true})

组合索引

有时候我们的查询不是单条件的,可能是多条件,那么我们可以建立组合索引来加速查询。

db.TestCollection.Person.ensureIndex({Name:1,Age:1})

删除索引

db.TestCollection.Person.dropIndex("索引名称")
 
时间: 2024-12-12 16:11:51

Mongodb学习笔记三(Mongodb索引操作及性能测试)的相关文章

Mongodb学习笔记一(Mongodb环境配置)

mongodb学习 *:first-child { margin-top: 0 !important; } body>*:last-child { margin-bottom: 0 !important; } /* BLOCKS =============================================================================*/ p, blockquote, ul, ol, dl, table, pre { margin: 15px 0;

MongoDB学习笔记(一) MongoDB介绍及安装

这是MongoDB的系列学习笔记的第一篇,主要介绍什么是非关系型数据库MongoDB,如何下载,去哪儿下载,又该怎么正确的安装等一系列问题. 一.前言 最近开始学习非关系型数据库MongoDB,却在博客园上找不到比较系统的教程,很多资料都要去查阅英文网站,效率比较低下.本人不才,借着自学的 机会把心得体会都记录下来,方便感兴趣的童鞋分享讨论.部分资源出自其他博客,旨将零散知识点集中到一起,如果有侵犯您的权利,请联系li- [email protected].大部分内容均系原创,欢迎大家转载分享,

MongoDB学习笔记(一) MongoDB介绍及安装(摘)

MongoDB是一个高性能,开源,无模式的文档型数据库,是当前NoSql数据库中比较热门的一种.它在许多场景下可用于替代传统的关系型数据库或键/值存储方式.Mongo使用C++开发.Mongo的官方网站地址是:http://www.mongodb.org/,读者可以在此获得更详细的信息. 小插曲:什么是NoSql? NoSql,全称是 Not Only Sql,指的是非关系型的数据库.下一代数据库主要解决几个要点:非关系型的.分布式的.开源的.水平可扩展的.原始的目的是为了大规模web应用,这场

MongoDB学习笔记01 MongoDB的安装及使用

最近由于工作需要,要开始接触mongodb了,于是开始研究mongodb,研究的第一步,自然是从安装及使用开始.日后肯定还会有更多的研究学习,于是准备做下一系列相关笔记,供日后温习. 1.Windows版本安装 1)版本下载 MongoDB下载地址:http://www.mongodb.org/downloads 下载相应版本,此处我下载的是64位. 安装过程很简单,和普通软件安装类似,大部分是Next,安装过程中安装类型选择的customs类型,自定义安装目录为D:/MongoDB OK,直到

Mongodb学习笔记二(Mongodb基本命令)

一.Mongodb命令 说明:Mongodb命令是区分大小写的,使用的命名规则是驼峰命名法. 对于database和collection无需主动创建,在插入数据时,如果database和collection不存在则会自动创建. 常用命令 help命令通过此命令可以看到一些最基本的命令,如图: use命令例如命令[use demodb],创建demodb,不用担心demodb不会创建,当使用use demodb 命令创建第一个collection时会自动创建数据库demodb,如图: 插入数据使用

MongoDB学习笔记六:高级操作

[数据库命令]『命令的工作原理』MongoDB中的命令其实是作为一种特殊类型的查询来实现的,这些查询针对$cmd集合来执行.runCommand仅仅是接受命令文档,执行等价查询,因此,> db.runCommand({"drop" : "test"})这个drop调用实际上是这样的: db.$cmd.findOne({"drop" : "test"})当MongoDB服务器得到查询$cmd集合的请求时,会启动一套特殊的逻

Mongodb学习总结-4(索引操作)

这些天项目改版,时间比较紧,博客也就没跟得上,还望大家见谅. 好,今天分享下mongodb中关于索引的基本操作,我们日常做开发都避免不了要对程序进行性能优化,而程序的操作无非就是CURD,通常我们 又会花费50%的时间在R上面,因为Read操作对用户来说是非常敏感的,处理不好就会被人唾弃,呵呵. 从算法上来说有5种经典的查找,具体的可以参见我的算法速成系列,这其中就包括我们今天所说的“索引查找”,如果大家对sqlserver比较了解 的话,相信索引查找能给我们带来什么样的性能提升吧. 我们首先插

MongoDB学习笔记四:索引

索引就是用来加速查询的.创建数据库索引就像确定如何组织书的索引一样.但是你的优势是知道今后做何种查询,以及哪些内容需要快速查找.比如:所有的查询都包括"date"键,那么很可能(至少)需要建立一个关于"date"的索引.如果要查询用户名,则不必索引"user_num"键,因为根本不会对其进行查询.现在要依照某个键进行查找:> db.people.find({"username" : "mark"})当

MongoDB学习笔记&lt;三&gt;

继续学习MongoDB,这次主要的学习内容是使用修改器来完成局部的更新操作 1.$set 用来指定一个键值对,如果存在键就进行修改,不存在就进行添加 db.person.update({"name":"xiaoming"},{$set:{"age":27}})如果age键存在,则把age键的值变成27,如果不存在,则在文档中添加age键,值为27 2.$inc 只可与数字类型一起使用,它可以把指定的键的数值进行加减指定大小的数值 db.perso