【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}

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

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值