Performance MongoDB:双字段索引与文档字段索引
我需要通过两个字段(唯一索引)对集合进行索引,比如field1和field2。在性能方面,哪种方法更好:Performance MongoDB:双字段索引与文档字段索引,performance,mongodb,indexing,Performance,Mongodb,Indexing,我需要通过两个字段(唯一索引)对集合进行索引,比如field1和field2。在性能方面,哪种方法更好: 创建一个常规的两列索引 -或- 将这两个字段合并到一个文档字段{field1:value,field2:value2}中,并为该字段编制索引 注意:我将始终按这两个字段一起查询。您可以将两列分开,并创建一个索引,以便在同时查询这两个字段时提高性能 db.things.ensureIndex({field1:1, field2:1}); 将列放在同一列中不会提高性能,因为必须以相同的方式对
注意:我将始终按这两个字段一起查询。您可以将两列分开,并创建一个索引,以便在同时查询这两个字段时提高性能
db.things.ensureIndex({field1:1, field2:1});
将列放在同一列中不会提高性能,因为必须以相同的方式对它们进行索引:
db.things.ensureIndex({fields.field1:1, fields.field2:1});
也可以为整个文档编制索引
db.things.ensureIndex({fields: 1});
性能可能会有所提高,但这一点值得怀疑。使用测试数据库,创建测试数据,并对一些测试进行基准测试,以找出答案。我们希望听到您的结果。我会在这两个字段上创建一个复合索引。这将占用更少的磁盘空间,因为您不需要存储额外的组合字段,并且在第一个字段上增加一个额外的索引,即
{a:1,b:1}
上的索引也是{a:1}
上的索引好吧,不管我是将这两个字段存储在一起还是单独的字段中,将占用相同的空间。此外,我将始终按这两个字段一起查询,因此您列出的第二个好处也不适用于这两个字段。我所好奇的是查询性能。有什么想法吗?如果你把两个字段合并起来,它会占用更少的空间,因为你不需要同时存储两个字段名。就查询性能而言,我认为不会有太大的差异,最好的办法是尝试一下,MongoDB有一些很好的内置评测功能: