MongoDB索引的使用
语法
- 创建索引语法:db.集合名.createIndex(待创建索引的列 [,额外选项])
- 参数:
待创建索引的列:{键:1,...,键:-1}
说明:1升序 -1降序 例如{age:1}表示创建age索引并按照升序的方式存储
额外选项:设置索引的名称或者唯一索引等等
- 删除索引语法:
全部删除:db.集合名.dropIndexes()
删除指定:db.集合名.dropIndex(索引名)
- 查看索引语法:db.集合名.getIndexes()
练习
准备:向数据库中新增十万条数据
//选择数据库 use test5; //向数据库中添加数据 for(var i=0;i<100000;i++){ db.c1.insert({'name':"aaa"+i,"age":i}); }
创建普通索引
需 求:给name添加普通索引
练习1:给name添加普通索引,命令:db.c1.createIndex({name:1})

练习2:删除name索引,命令:db.c1.dropIndex('name_1')

练习3:给name创建索引并起名webopenfather
命令:db.c1.createIndex({name:1}, {name: "webopenfather"})

创建复合/组合索引
需求:给name和age添加组合索引
说明:就是一次性给两个字段建立索引
语法:db.集合名.createIndex({键1:方式,键2:方式})

创建唯一索引
需 求:给name添加普通索引
语 法:db.集合名.createIndex(待添加索引的列, {unique: 列名})
练习1:删除全部索引,命令:db.c1.dropIndexes();

练习2:设置唯一索引,命令:db.c1.createIndex({name:1}, {unique: "name"})

练习3:测试唯一索引特性,
命 令:
db.c1.insert({name: "a"});
db.c1.insert({name: "a"});

分析索引(explain)
-
语法:db.集合名.find().explain('executionStats')
-
说明:

COLLSCAN 全表扫描
IXSCAN 索引扫描
FETCH 根据索引去检索指定document
- 练习
测试:age未添加索引情况
语法:db.c1.find({age:18}).explain('executionStats');

测试:age添加索引情况
语法:db.c1.createIndex({age: 1})
继续:db.c1.find({age:18}).explain('executionStats')
选择规则(如何选择合适的列创建索引)
-为常做条件、排序、分组的字段建立索引
-选择唯一性索引 (ps. 同值较少如性别字段)
-选择较小的数据列,为较长的字符串使用前缀索引 (ps. 索引文件更小)


浙公网安备 33010602011771号