gpt4 book ai didi

MongoDB 索引,是否可以同时创建普通索引和复合索引?

转载 作者:可可西里 更新时间:2023-11-01 10:43:44 34 4
gpt4 key购买 nike

我必须为 MongoDb 集合创建索引:

用户

  • _id
  • 应用版本
  • 国家代码
  • facebook_id
  • token
  • 用户名
  • 设备编号

1.30%的查询是 {_id, token,device_id}

2.其他常见查询 (30%) 是 {_id, token}

3.其余 (40%) 是单独使用的查询: {_id} {device_id} {用户 ID} {facebook_id}

我不知道如何管理它。我几乎可以肯定我需要在 {_id:"1", token:"1",device_id:"1"} 上创建一个复合索引。我的问题是:

a)复合索引会优化第一种和第二种情况,对吗?

b)案例3怎么办?为每个字段创建索引?

谢谢!

最佳答案

是的,可以在字段上创建复合索引并单独索引这些字段。

如果您创建这样的复合索引:

db.coll.ensureIndex({_id : 1, token : 1,device_id: 1}); 

该索引将支持对索引字段前缀的查询:复合索引将支持以下查询:

db.coll.find({ _id : ObjectId(....), token : "foo"});
db.coll.find({ _id : ObjectId(....), token : "foo", device_id: 12345});

当您在这些字段上有复合索引时,您还可以在单​​个字段上创建索引(例如,在 tokendevice_id 等字段上)。

正如 Sammaye 在评论中所建议的那样。最后一种情况可能需要 device_iduseridfacebook_id 字段上的 3 个单独索引(_id 上的唯一索引字段是默认创建的,所以你不需要创建它)。

关于MongoDB 索引,是否可以同时创建普通索引和复合索引?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24384054/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com