MongoDb 索引原理
MongoDb 索引原理
(一)索引基本介绍
索引是提高查询查询效率最有效的手段。索引是一种特殊的数据结构,索引以易于遍历的形式存储了数据的部分内容(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)文本索引和地理索引
更多推荐
所有评论(0)