0

这个问题很简单,你可以在一个集合中有多个索引吗?我想你可以,但每次我搜索多个索引时,我都会得到关于复合索引的解释,这不是我想要的。

我要做的就是确保我可以有两个简单的独立索引。(我用的是php,我会用php代码格式化,不过我懂的

db.posts.ensureIndex({ my_id1: 1 }, {unique: true, background: true});
db.posts.ensureIndex({ my_id2: 1 }, {background: true});

我一次只搜索一个索引。

复合索引不是我想要的,因为:

  1. 一个索引是唯一的,而另一个不是。

  2. 我认为这不会是最快的选择。(打开链接以了解我认为它会变慢的原因。链接

我只是想确保索引能够正常工作。

4

1 回答 1

3

您肯定可以按照自己的方式定义索引。来自MongoDB 文档

有多少索引?索引通过一个键进行检索,包括有序的顺序检索,非常快。按键更新也更快,因为 MongoDB 可以非常快速地找到要更新的文档。但是,请记住,创建的每个索引都会为插入和删除增加一定的开销。除了将数据写入基本集合之外,还必须将键添加到 B-Tree 索引中。因此,索引最适合读取次数远大于写入次数的集合。对于写入密集型的集合,索引在某些情况下可能会适得其反。大多数集合都是读取密集型的,因此在大多数情况下索引是一件好事。

我还建议您查看Mongo在运行通过两个字段的查询时将如何决定使用什么索引。

另请查看他们的索引建议和常见问题解答页面。它将解释每个查询只有一个索引选择性等。

ps 这个来自 10gen 的幻灯片共享平台建议每个集合有 40 个索引的限制。

于 2012-05-02T21:15:36.850 回答