我在mongo中有以下2个索引
{a,b,c,d}(复合)(称为rawIndex1)
{c}(称为time-gmt_1)
在具有一定数量数据的一台计算机中,给定查询使用第一个
在具有更多数据的第二台机器中,同一查询使用第二台机器。
这是预期的行为吗?
我唯一能想到的是在第二台机器(有大量数据)中,第一个索引的大小是第二个索引的两倍,mongo更喜欢第二个索引,因为它不能保留第一个索引在RAM中。
我在第一台机器上检查过,索引的大小与第二台机器的大小相反。
explain(“verbose”)的输出是
{ “cursor”:“BtreeCursor time-gmt_1”,
"isMultiKey" : false, "n" : 0, "nscannedObjects" : 6, "nscanned" : 7, "scanAndOrder" : false, "indexOnly" : false, "nChunkSkips" : 0, "indexBounds" : { "c" : [ [ ISODate("2014-12-31T00:00:00Z"), ISODate("2015-01-07T23:59:59Z") ] ] } },
“cursor”:“BtreeCursor rawIndex1”,
"isMultiKey" : false, "n" : 6, "nscannedObjects" : 6, "nscanned" : 6, "scanAndOrder" : false, "indexOnly" : false, "nChunkSkips" : 0, "indexBounds" : { "a" : [ [ "an", "an" ] ], "b" : [ [ "bn", "bn" ] ], "c" : [ [ ISODate("2014-12-31T00:00:00Z"), ISODate("2015-01-07T23:59:59Z") ] ], "d" : [ [ "d1", "d1" ], [ "d2", "d2" ], [ "d3", "d3" ] ] }
“cursor”:“BtreeCursor time-gmt_1”,
"isMultiKey" : false, "n" : 6, "nscannedObjects" : 6, "nscanned" : 19755316, "nscannedObjectsAllPlans" : 26, "nscannedAllPlans" : 19755339, "scanAndOrder" : false, "indexOnly" : false, "nYields" : 4, "nChunkSkips" : 0, "millis" : 847364,