MongoDB的初学六:索引
来源:互联网 发布:张无忌实力知乎 编辑:程序博客网 时间:2024/05/19 10:13
一、索引基础:
MonogDB的索引和大部分关系型数据库一模一样,其中包括了一些基本的优化技巧,以前具有索引知识完全通用。
索引的创建命令:
db.test.ensureIndexes({id:1})
其中数组1表示索引按升序存储,-1表示索引按降序排列存储
查询索引的命令:
db.test.getIndexes
删除索引的命令:
db.test.dropIndex({id:1})
在MongoDB中,也可以建立复合索引
db.test.ensureIndex({id:1,name:-1})
索引建立后,有索引的字段查询时会用到该索引,使用id查询时会有索引,使用id和name查询是也有索引,但是如果仅仅使用name进行查询,则没有索引可以使用。因策,如果使用了复合索引,想在查询中使用索引,必须是复合索引的前N个索引,才会有效。然而,如果查询查询条件中的键值顺序和复合索引中的创建顺序不一致的话,MongoDB会字段帮助我们调整顺序,以便使用复合索引。
db.test.find({name:"",age:1})
对于上面的查询,MongoDB会在检索前将动态的调整查询条件,以便使用创建的索引。
二、唯一索引
在默认情况下创建的索引均不是唯一索引,创建唯一索引的命令:
db.test.ensureIndex({id:1},{unique:true})
如果再次插入id重复的文档时,MongoDB会报错,而且会提示重复的键
删除唯一索引的方式和删除索引是一样的
我们也可以创建复合唯一索引,即保证复合键值唯一即可
三、使用explain
explain是非常有用的工具,可以帮助我们获得查询方面诸多有用的信息,只要对游标调用该方法,就会获得相应的查询细节。
其中:
"cursor":"BasicCursor"表示没有使用索引
"nscanned":3表示查询了多少个文档
"n":3 表示返回了多少个文档
"millis":0表示整个查询的耗时
四、索引管理
system.indexes集合中包含了每一个索引的详细信息,因此可以通过下面的命令进行查询
db.system.indexes.find()
如果在为已有的文档创建索引时,可以在后台执行索引的创建,这样就不会阻塞其他的操作,但是阻塞创建效率更高,但是MongoDB这时就无法进行其他的操作了
db.test.ensureIndex({id:1},{background:true})
- MongoDB的初学六:索引
- 初学mysql(六)-数据库之索引
- 初学MongoDB的笔记
- 菜鸟的mongoDB学习---(六)MongoDB 索引
- Ruby操作MongoDB(进阶六)-索引Indexing
- MongoDB:mongodb的索引操作
- MongoDB:mongodb的索引操作
- MongoDB学习笔记(六) MongoDB索引用法和效率分析
- MongoDB学习笔记(六) MongoDB索引用法和效率分析
- MongoDB学习笔记(六) MongoDB索引用法和效率分析
- MongoDB学习笔记(六) MongoDB索引用法和效率分析
- MongoDB学习笔记(六) MongoDB索引用法和效率分析
- MongoDB学习笔记(六) MongoDB索引用法和效率分析
- MongoDB学习笔记(六) MongoDB索引用法和效率分析
- MongoDB学习笔记(六) MongoDB索引用法和效率分析
- MongoDB的初学一:NOSQL和MongoDB
- mongodb的地理位置索引
- mongodb的地理位置索引
- Java线程:并发协作-生产者消费者模型
- HadoopSourceAnalyse --- Mapreduce ApplicationMaster TaskAttempt FSM
- 设计模式-抽象工厂模式
- (my)eclipse工作空间中删除项目重新导入会遇到项目已经存在的问题
- NASM中文手册
- MongoDB的初学六:索引
- Linux下Android手机的真机调试配置
- mongodb入门-11 更新1
- 《Orange’s 一个操作系统的实现》3.保护模式1----pm.inc分析
- 公子王孙把扇摇
- VXI和PXI的区别
- Android Studio Error "UNEXPECTED TOP-LEVEL EXCEPTION"
- 快速开启小太阳图标、解决显卡亮度调节。(适用于多种显卡驱动方式)
- 《c和指针》笔记--梳理一下fgetc,getc,getchar,fputc,putc,putchar....