【发布时间】:2015-01-26 21:40:40
【问题描述】:
我正在使用 MongoDB Native 2.0+。
我有一个名为services 的集合。此集合包含在另一个集合中引用 clients 的文档。这意味着,每个服务都由一个客户“拥有”。
将有大约 50-200 个客户。 理论上每个客户可以“拥有”大约 1-50 个服务,但实际上对于大多数客户来说可能是 1-10 个左右。
每个服务都有两个字段作为唯一标识符。一种是_id,用于管理 URL 和文档之间的不可变引用。另一个是slug,这是一个更简单的标识符,主要用于公共 URL 以提高可读性。
我对这个集合主要有两种查询:
db.services.find({client: clientID, _id: id}).toArray(callback)
db.services.find({client: clientID, slug: slug}).toArray(callback)
我认为我必须创建以下两个复合索引以获得最佳查询:
db.services.ensureIndex({client: 1, _id: 1})
db.services.ensureIndex({client: 1, slug: 1})
但考虑到每个客户“拥有”的服务数量可能很小(?)。也许只需要一个索引就足够了。要么……
db.services.ensureIndex({client: 1})
或者只是这一个复合索引
db.services.find({client: clientID, slug: slug}).toArray(callback)
...因为slug 查询的使用可能比`_id 更多。
你会创建什么索引?
感谢您提供有关此问题的所有提示!
【问题讨论】:
标签: mongodb