2

作为我当前的任务,我必须优化索引,以便我们的一些查询运行得更快。我读了这篇文章:http://emptysqua.re/blog/optimizing-mongodb-compound-indexes/
正如这些人所建议的那样 我的最佳查询是什么时候:

 nscanned= nscannedObject = n  

好吧,我能够做到这一点。然而,满足此公式的查询比不满足的查询慢!这是我的解释输出:

{
    "cursor" : "BtreeCursor previous_sticky_1",
    "nscanned" : 65019,
    "nscannedObjects" : 65019,
    "n" : 65019,
    "millis" : 5456,
    "nYields" : 76,
    "nChunkSkips" : 0,
    "isMultiKey" : false,
    "indexOnly" : false,
}//everything is ok ( nscanned= nscannedObject = n ) 



  {
"cursor" : "BtreeCursor subnetInfo.giAddr_1",
"nscanned" : 65023,
"nscannedObjects" : 65023,
"n" : 65019,
"scanAndOrder" : true,
"millis" : 3355,
"nYields" : 37,
"nChunkSkips" : 0,
"isMultiKey" : false,
"indexOnly" : false

} // nscanned = nscannedObject > n 但是,“millis = 3355 < 5456” ???

你们能建议这是为什么吗?以及使用哪个索引?subnetInfo.giAddr_1 或 previous_sticky_1 ?

4

1 回答 1

3

您应该使用这两种提示尝试多次执行查询并计算平均时间。您的结果可能与您在第一次执行期间必须将索引文件分页到常驻内存中这一事实有关。使用触摸来消除这种影响。

您的索引指标是相似的,所以我不希望使用其中一个或另一个有什么大的区别。您没有提到的可能更相关的是您在索引中使用的字段。

于 2013-08-15T12:01:51.217 回答