首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >带排序的MongoDB复合索引前缀

问带排序的MongoDB复合索引前缀
EN

Stack Overflow用户
提问于 2020-01-25 14:34:56
回答 1查看 91关注 0票数 0

我很难决定在mongodb复合索引中放置排序字段的最佳位置。

我的理解是,我们需要选择基数和选择性最高的字段作为复合索引中的前一字段

代码语言:javascript
复制
db.person.createIndex({ rating: 1, name: 1, gender: 1});

对于此示例,rating的范围仅为1到5,而gender为M或F。因此,name始终是最高的基数和选择性,并且应该是复合索引中最左侧的字段;但是,查询的用例是这样的: rating始终在查询中提供,并且可以通过应用程序中的筛选器选择性地提供name或gender。

对于这种情况,哪个选项最好:

1)

代码语言:javascript
复制
db.person.createIndex({ rating: 1, name: 1, gender: 1});

2)

代码语言:javascript
复制
db.person.createIndex({ rating: 1});
db.person.createIndex({ name: 1, gender: 1});
db.person.createIndex({ gender: 1});
EN

回答 1

Stack Overflow用户

发布于 2021-02-13 12:50:05

您需要添加以下索引:

代码语言:javascript
复制
// supports query with rating and gender specified
db.person.createIndex({ rating: 1, gender: 1});

// supports query with rating and name (and optionally gender) specified
db.person.createIndex({ name: 1, rating: 1, gender: 1});
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59906932

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档