【发布时间】:2014-08-14 13:31:23
【问题描述】:
我必须为 MongoDb 集合创建索引:
用户
- _id
- app_version
- 国家代码
- facebook_id
- 令牌
- 用户名
- device_id
1. 30% 的查询是 {_id, token,device_id}
2.其他常见查询 (30%) 是 {_id, 令牌}
3.其余 (40%) 是单独使用的查询: {_id} {device_id} {用户名} {facebook_id}
我不知道如何管理它。 我几乎可以肯定我需要在 {_id:"1" , token:"1",device_id:"1"} 上创建一个复合索引。 我的问题是:
a)复合索引会优化第一种和第二种情况吗?
b)案例3我该怎么办?为每个字段创建索引?
谢谢!
【问题讨论】:
-
查询是否包含所有字段?例如,一个涉及所有 {_id, token,device_id} 的查询?
-
不,我有不同的查询:{_id, token,device_id}, {_id,token} {_id},{userid},{device_id},{facebook_id}。这些都是查询@奈姆琼
-
是的,由于 MongoDB 中复合索引的树状机制,您可以将场景三作为 4 个单独的索引来执行。虽然 _id 已经被索引了
-
@Sammaye 问题 a 的答案是什么?
-
那里的答案是肯定的,前提是您只通过
{_id, token, device_id}或{_id, token}进行查询,并且索引按{_id, token, device_id}的顺序排序
标签: mongodb indexing compound-index nosql