Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/performance/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Performance MongoDB:双字段索引与文档字段索引_Performance_Mongodb_Indexing - Fatal编程技术网

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

Performance MongoDB:双字段索引与文档字段索引,performance,mongodb,indexing,Performance,Mongodb,Indexing,我需要通过两个字段(唯一索引)对集合进行索引,比如field1和field2。在性能方面,哪种方法更好: 创建一个常规的两列索引 -或- 将这两个字段合并到一个文档字段{field1:value,field2:value2}中,并为该字段编制索引 注意:我将始终按这两个字段一起查询。您可以将两列分开,并创建一个索引,以便在同时查询这两个字段时提高性能 db.things.ensureIndex({field1:1, field2:1}); 将列放在同一列中不会提高性能,因为必须以相同的方式对

我需要通过两个字段(唯一索引)对集合进行索引,比如field1和field2。在性能方面,哪种方法更好:

  • 创建一个常规的两列索引

    -或-

  • 将这两个字段合并到一个文档字段{field1:value,field2:value2}中,并为该字段编制索引


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

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

    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有一些很好的内置评测功能: