(一)索引基本介绍

       索引是提高查询查询效率最有效的手段。索引是一种特殊的数据结构,索引以易于遍历的形式存储了数据的部分内容(Mongodb和Mysql使用B+树)(如:一个特定的字段或一组字段值),索引会按一定规则对存储值进行排序,而且索引的存储位置在内存中,所在从索引中检索数据会非常快。如果没有索引,MongoDB必须扫描集合中的每一个文档,这种扫描的效率非常低,尤其是在数据量较大时。

延伸:BTree和B+Tree的含义和他们的区别

最大的区别在于B+Tree内部节点不保存数据,只保存索引信息,所有数据都保存在叶子节点。

B-Tree    简单理解: 二分查找;

B+    简单理解:内节点不存储数据了,改成存储内节点,一次IO操作,可以查到更多的数据,最终IO次数比B-Tree少,效率更高了;

(二)索引类型

   MongoDB支持多种类型的索引,包括单字段索引、复合索引、多key索引、文本索引等,每种类型的索引有不同的使用场合。

(1)单字段索引(针对一个字段)

(2)复合索引(针对多个索引)

db.person.createIndex( {age: 1, name: 1} )

(3)多key索引(Multikey Index)

{"name" : "jack", "age" : 19, habbit: ["football, runnning"]}

db.person.createIndex( {habbit: 1} ) // 自动创建多key索引

(4)哈希索引(Hashed Index)

是指按照某个字段的hash值来建立索引,目前主要用于MongoDB Sharded Cluster的Hash分片,hash索引只能满足字段完全匹配的查询,不能满足范围查询等

(5)文本索引和地理索引

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐