MongoDB:双字段索引与文档字段索引

时间:2011-05-18 21:25:47

标签: performance mongodb indexing

我需要通过两个字段(唯一索引)索引集合,比如field1和field2。在性能方面有什么更好的方法:

  1. 创建常规的双列索引

    - 或 -

  2. 将这两个字段合并到一个文档字段{field1:value,field2:value2}并索引该字段?

  3. 注意:我将始终一起查询这两个字段。

2 个答案:

答案 0 :(得分:3)

您可以将列分开并创建一个索引,以便在同时查询这两个字段时提高性能。

db.things.ensureIndex({field1:1, field2:1});

http://www.mongodb.org/display/DOCS/Indexes#Indexes-CompoundKeysIndexes

将列放在同一列中不会提高性能,因为您必须以相同的方式对它们编制索引:

db.things.ensureIndex({fields.field1:1, fields.field2:1});

http://www.mongodb.org/display/DOCS/Indexes#Indexes-EmbeddedKeys

或者您可以索引整个文档

db.things.ensureIndex({fields: 1});

http://www.mongodb.org/display/DOCS/Indexes#Indexes-DocumentsasKeys

可能会有性能提升,但非常可疑。使用测试数据库,创建测试数据并对一些测试进行基准测试以找出它。我们很乐意听到您的结果。

答案 1 :(得分:1)

我会在两个字段上创建一个复合索引。这将占用更少的磁盘空间,因为您不需要存储额外的组合字段,并且在第一个字段上为您提供额外索引的奖励,即超过{ a:1, b:1 }的索引也是{的索引。 {1}}。