Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/23.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
索引查询在MongoDB中仍然非常慢_Mongodb_Indexing - Fatal编程技术网

索引查询在MongoDB中仍然非常慢

索引查询在MongoDB中仍然非常慢,mongodb,indexing,Mongodb,Indexing,我有这样一个简单的查询: ({ public: false, publicate: 1, timeline: 1, timeline_visibility: true }).sort({ date: -1}) 我有一个用于该查询的特定索引,并且正在使用它,但是查询速度非常慢。以下是explain()的输出: 我在MongoDB 2.0.2、2.0.9和2.4(都在Linux上)中尝试过这一点——结果相同。我怎样才能修好它? 谢谢 这不是解释的全部输出,但是有一个注释,n(要返回的文档数)是1

我有这样一个简单的查询:

 ({ public: false, publicate: 1, timeline: 1, timeline_visibility: true }).sort({ date: -1})
我有一个用于该查询的特定索引,并且正在使用它,但是查询速度非常慢。以下是explain()的输出:

我在MongoDB 2.0.2、2.0.9和2.4(都在Linux上)中尝试过这一点——结果相同。我怎样才能修好它?
谢谢

这不是解释的全部输出,但是有一个注释,
n
(要返回的文档数)是141461。这是大量返回的文档,事实上,在查询运行期间,有太多MongoDB在接受其他操作141次。当数据不在RAM中时,MongoDB将产生,这意味着您必须分页大量数据。为什么要退回这么多文件?您不能进一步限制您的集合吗?正如@Sammaye提到的,问题是太多的对象与您的查询匹配。虽然我不知道您想做什么,但我猜您的查询条件的选择性非常低。如果无法减少与查询匹配的文档数,可以使用limit()提高查询响应速度。谢谢!是的,使用limit()可以显著改进查询。我不受限制地使用查询的原因是为了获得所有文档的计数,这样我就可以生成分页。您可能希望研究基于范围的分页,但您的查询可能会得到改进。我将研究如何改进查询,看看是否得到更窄的结果。如果不是,那么我将在这里研究基于范围的分页
"cursor" : "BtreeCursor public_1_publicate_1_timeline_1_timeline_visibility_1_date_-1",
"nscanned" : 141461,
"nscannedObjects" : 141461,
"n" : 141461,
"millis" : 535,
"nYields" : 141,
"nChunkSkips" : 0,
"isMultiKey" : false,
"indexOnly" : false,