MongoDB的复合索引是啥?
发布时间:2022-04-22 10:50:44 所属栏目:系统 来源:互联网
导读:MongoDB的复合索引是什么?很多人可能对于MongoDB的复合索引不是很熟悉,因此这篇文章小编就给大家介绍一下关于MongoDB的复合索引的定义和使用,需要的朋友可以参考。 为什么需要索引? 当你抱怨MongoDB集合查询效率低的时候,可能你就需要考虑使用索引了,
MongoDB的复合索引是什么?很多人可能对于MongoDB的复合索引不是很熟悉,因此这篇文章小编就给大家介绍一下关于MongoDB的复合索引的定义和使用,需要的朋友可以参考。 为什么需要索引? 当你抱怨MongoDB集合查询效率低的时候,可能你就需要考虑使用索引了,为了方便后续介绍,先科普下MongoDB里的索引机制(同样适用于其他的数据库比如mysql)。 mongo-9552:PRIMARY> db.person.find() { "_id" : ObjectId("571b5da31b0d530a03b3ce82"), "name" : "jack", "age" : 19 } { "_id" : ObjectId("571b5dae1b0d530a03b3ce83"), "name" : "rose", "age" : 20 } { "_id" : ObjectId("571b5db81b0d530a03b3ce84"), "name" : "jack", "age" : 18 } { "_id" : ObjectId("571b5dc21b0d530a03b3ce85"), "name" : "tony", "age" : 21 } { "_id" : ObjectId("571b5dc21b0d530a03b3ce86"), "name" : "adam", "age" : 18 } 当你往某各个集合插入多个文档后,每个文档在经过底层的存储引擎持久化后,会有一个位置信息,通过这个位置信息,就能从存储引擎里读出该文档。比如mmapv1引擎里,位置信息是『文件id + 文件内offset 』, 在wiredtiger存储引擎(一个KV存储引擎)里,位置信息是wiredtiger在存储文档时生成的一个key,通过这个key能访问到对应的文档;为方便介绍,统一用pos(position的缩写)来代表位置信息。 什么是复合索引? 复合索引,即Compound Index,指的是将多个键组合到一起创建索引,这样可以加速匹配多个键的查询。不妨通过一个简单的示例理解复合索引。 students集合如下: db.students.find().pretty() { "_id" : ObjectId("5aa7390ca5be7272a99b042a"), "name" : "zhang", "age" : "15" } { "_id" : ObjectId("5aa7393ba5be7272a99b042b"), "name" : "wang", "age" : "15" 当进行多键查询时,可以通过explian()分析执行情况(结果仅保留winningPlan): db.students.find({name:"zhang",age:"14"}).explain() (编辑:云计算网_泰州站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |