1.创建简单的索引
为name建索引
db.persons.ensureIndex({name:1}) //1表示正序,-1表示倒序
2.索引使用需要注意的地方
2.1.创建索引的时候需注意1表示创建正序索引,-1表示建倒序索引
2.2.索引的创建在提高查询性能的同时会影响插入的性能
对于经常查询少插入的文档中可以考虑用索引
符合索引要注意索引的先后顺序
每个键全建立索引不一定能提高性能(合理创建索引)
在做排序工作的时候如果是超大数据量的时候可以考虑加上索引,用来提高排序的性能
3.索引的名称
3.1 给哪个键建立索引,默认一般都是该键_1或该键_-1就是它的名称
3.2但也可以指定索引的名称,例如:给某个字段创建索引的同时指定索引的名字
db.persons.ensureIndex({name:-1},{name:"personName"})
4.唯一索引
解决集合persons中不能插入重复的数值
则建立唯一索引
db.persons.ensureIndex({name:-1},{unique:true})
5.剔除重复值
如果建立唯一索引之前已经有重复数值的处理(剔除重复值)
db.persons.ensureIndex({name:-1},{unique:true,dropDups:true})
6.强制查询指定的索引(hint)
db.persons.find({name:"1person",_id:1}).hint({name:-1}) //指定的索引必须是已经创建了的索引,name是建立了倒序索引的字段
7.Expain
详细查看本次查询使用哪个索引和查询数据的状态信息
db.persons.find({name:"1person"}).explain()
8.system.indexes
在shell查看数据库已经建立的索引
db.system.indexes.find()
db.system.namespaces.find()
9.执行创建索引的过程会暂时锁表如何解决?
为了不影响查询,我们可以让索引的创建过程发生在后台
db.persons.ensureIndex({name:-1},{background:true}) //在name这个字段上创建索引,并发生在后台
10.删除索引
批量删除索引
db.runCommand({dropIndexes:"person",index:"*"})
精确删除索引
db.runCommand({dropIndexes:"persons",index:"name_-1"})
MongoDB_07之索引
最新推荐文章于 2014-06-05 22:22:00 发布