5.8.2 复合索引
2025年09月26日
5.8.2 复合索引
复合索引(Compound Indexes)指一个索引包含多个字段,用法和单键索引基本一致。使用复合索引时要注意字段的顺序,如下添加一个name和age的复合索引,name正序,age逆序,文档首先按照name正序排序,然后name相同的文档按age进行逆序排序。MongoDB中一个复合索引最多可以包含32个字段。这里需要注意的是:利用复合索引进行查询时,只有第一个索引字段会被使用,查询涉及其他索引字段时仍然使用全表扫描。
//添加复合索引,name正序,age逆序
>db.user.createIndex({"name":1,"age":-1})
//过滤条件为name,或包含name的查询会使用索引(索引的第一个字段)
>db.user.find({name:"张三"}).explain()
>db.user.find({name:"张三",level:10}).explain()
//查询条件为age时,不会使用上面创建的索引,而是使用的全表扫描
>db.user.find({age:23}).explain()