MongoDB 复合索引前缀与排序



我很难决定最好地将排序字段放在mongodb复合索引中的哪个位置。

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

db.person.createIndex({ rating: 1, name: 1, gender: 1});

对于此示例,评级范围仅为 1 到 5,性别为 M 或 F 因此,名称始终是最高的基数和选择性,并且应该是复合索引中最左边的字段;但是,查询的用例是,查询中始终提供评级,并且可以选择通过应用程序中的筛选器提供姓名或性别。

哪个选项最适合这种情况:

1(

db.person.createIndex({ rating: 1, name: 1, gender: 1});

2(

db.person.createIndex({ rating: 1});
db.person.createIndex({ name: 1, gender: 1});
db.person.createIndex({ gender: 1});

您需要添加以下索引:

// 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});

相关内容

  • 没有找到相关文章

最新更新