MongoDB 索引
索引通常能够极大的提高查询的效率,如果没有索引,MongoDB在读取数据时必须扫描集合中的每个文件并选取那些符合查询条件的记录。这种扫描全集合的查询效率是非常低的,特别在处理大量的数据时,查询可以要花费几十秒甚至几分钟,这对系统的性能是非常致命的。索引是特殊的数据结构,索引存储在一个易于遍历读取的数据集合中,索引是对数据库表中一列或多列的值进行排序的一种结构
创建索引
在MongoDB中会自动为文档中的_Id(文档的主键)键创建索引,与关系型数据的主键索引类似。
我们可以使用createIndex()函数来为其他的键创建索引。在创建索引时需要指定排序规则。1按照升序规则创建索引,-1按照降序规则创建索引。
在创建索引时,需要使用具有dbAdmin或者dbAdminAnyDatabase角色的用户。
语法格式:db.COLLECTION_NAME.createIndex({创建索引的键:排序规则,…},{创建索引的参数(可选参数)})
参数说明
给c1集合中name属性创建索引,指定名称为suiyi,后台创建
db.c1.createIndex({name:1},{background:true,name:“suiyi”});
查看索引
查看集合索引
我们可以通过getIndexes()或者getIndexSpecs()函数查看集合中的所有索引信息。
语法格式:db.COLLECTION_NAME.getIndexse()
其中getIndexes()可以在Navicat中执行,getIndexSpecs()只能在MongoDB客户端工具中执行。
查看索引键
我们可以通过使用getIndexKeys()函数查看集合的索引键。
注意:此方法在Navicat Pernium 15中无法执行,但是可以mongodb命令行中执行
语法格式:db.COLLECTION_NAME.getIndexKeys();
查看dev集合中的索引键
查看索引大小
我们可以通过totalIndexSize()函数来查看当前集合中索引的大小,单位为字节。
语法格式:db.COLLECTION_NAME.totalIndexSize([detail](可选参数))
参数解释:detail可选参数,传入除0或false外的任意数据,那么会显示该集合中每个索引的大小及集合中索引的总大小。如果传入0或false则只显示该集合中所有索引的总大小。默认值为false。注意:在navicat中无法显示全部索引内容,只能显示总索引大小
在客户端工具中效果
在navicat中只有总大小。
修改索引
MongoDB没有单独的修改索引函数,如果要修改某个索引,需要先删