我正在尝试找出特定查询的最佳索引是什么。 我以为我知道,但是有人对此表示怀疑。
我有一个包含以下字段的集合(我已经对名称进行了匿名化处理)
我创建了以下索引
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”应涵盖其排序,但有人提到我应为该排序创建一个单独的索引。...