0
点赞
收藏
分享

微信扫一扫

MongoDB-复合索引

复合索引

和 MySQL 一样, MongoDB 也支持复合索引, 也就是将多个字段的值作为索引。

?> 插入测试数据:

db.person.insert([
{name:'cs', age:19},
{name:'as', age:18},
{name:'bs', age:17},
{name:'bs', age:20},
])

  • 如果在创建索引的时候只指定了一个字段,那么就是创建的索引为单值索引

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

  • 如果在创建索引的时候指定了多个字段,那么这个索引就是复合索引

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

如上我们已经创建好了复合索引之后,紧接着我们可以进行查询测试测试:

  • 使用了索引

db.person.explain().find({name:'bs', age:17})
db.person.explain().find({name:'bs'})

  • 没有使用索引

db.person.explain().find({age:17})

如上我们创建的复合索引最终在数据结构方面的体现如下:

(as, 18) -> {name:'as', age:18}
(bs, 20) -> {name:'bs', age:20}
(bs, 17) -> {name:'bs', age:17}
(cs, 19) -> {name:'cs', age:19}

!> 复合键索引只支持 ​​前缀​​ 子查询, 也就是 A,B,C 复合索引 A,B,C 会使用索引, A,B会使用索引, A会使用索引,但是 B 不会使用索引, C 也不会使用索引, B,C 也不会使用索引。



举报

相关推荐

0 条评论