最佳Mongo DB索引进行搜索和排序

时间:2018-07-09 09:57:23

标签: mongodb sorting search indexing mongodb-query

我正在尝试找出特定查询的最佳索引是什么。 我以为我知道,但是有人对此表示怀疑。

我有一个包含以下字段的集合(我已经对名称进行了匿名化处理)

  • Field1(成千上万个不同的值)
  • Field2(数百个不同的值)
  • Field3(数十个左右不同的值)
  • SortField(数百个不同的值)

我创建了以下索引

db.MyCollection.createIndex( 
{ 
    "Field1" : 1.0,
    "Field2" : 1.0,
    "Field3" : 1.0,
    "SortField" : 1.0
}, 
{ 
    name: "MyIndex"
});

下面是我正在运行的查询。

db.MyCollection.find(
{
    "Field1": "Field1TestValue",
    "Field2": "Field2TestValue",
    "Field3": "Field3TestValue",
})
.sort({"SortField": 1})
.limit(1)

从我的执行计划中,我可以看到正在使用我的索引:)

首先,我是否正确地使“ SortField”成为索引中的最后一个字段?  即使“ SortField”的值大于“ Field3”的值,我只按“ SortField”进行排序,但我从未对其进行搜索

以前我被告知排序字段应该是索引中的最后一个字段,但是其他人告诉我它应该是索引中的第一个字段。...我是对的还是其他人?

第二,创建以下附加索引是否可以提高排序的性能?

db.MyCollection.createIndex( 
{ 
    "SortField" : 1.0
}, 
{ 
    name: "MySortIndex"
});

我相信“ MyIndex”应涵盖其排序,但有人提到我应为该排序创建一个单独的索引。...

0 个答案:

没有答案
相关问题