运维开发网

【MongoDB】复合索引

运维开发网 https://www.qedev.com 2020-04-07 10:44 出处:网络 作者:运维开发网整理
MongoDB支持复合索引,所谓复合索引就是一个索引包含多个字段,例如为如下collection建立一个复合索引: collection { user_id: score: …… } db.col.createIndex({‘user_id’ : 1, ‘score’ : -1}) 有数据库基础的同学对这个也没有什么疑惑,而且应该知道1表示升序,-1表示降序。 在MongoDB的复合索引中不允许有

MongoDB支持复合索引,所谓复合索引就是一个索引包含多个字段,例如为如下collection建立一个复合索引:

collection {

user_id:

score:

……

}

db.col.createIndex({‘user_id’ : 1, ‘score’ : -1})

有数据库基础的同学对这个也没有什么疑惑,而且应该知道1表示升序,-1表示降序。

  • 在MongoDB的复合索引中不允许有hash索引
  • 复合索引最多包含31个字段

其实复合索引的创建和使用并没有太多新鲜的内容,和单字段索引差不多,但是值得一讲的是复合索引的前缀匹配,这个应该在任何支持复合索引的数据库中都存在,这里就是以MongoDB为例。

假如有这样一个复合索引:

{'item' : 1, 'loc' : 1, 'stock' : 1}

那么上述索引有以下两个索引前缀:

1. {'item' : 1}
2. {'item' : 1, 'loc' : 1}

任何查询可以利用复合索引或复合索引的前缀索引加速查找。也就是说,上述一个复合索引可以支持以下三种索引:

{'item' : 1}
{'item' : 1, 'loc' : 1}
{'item' : 1, 'loc' : 1, 'stock' : 1}

但是需要以下字段的索引上述复合索引是无能为力的,只能另建索引:

{'loc' : 1}
{'stock' : 1}
{'loc' : 1, 'stock' : 1}

所以,一直提倡建立复合索引,因为复合索引能够带来额外的好处,根据业务查询,建立合适的复合索引,真是美滋滋。

0

精彩评论

暂无评论...
验证码 换一张
取 消