【MongoDB】复合索引

来源:互联网 发布:python 爬虫教程 编辑:程序博客网 时间:2024/06/12 00:05

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}

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