Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/13.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_Optimization_Indexing - Fatal编程技术网

MongoDb查询耗时较长

MongoDb查询耗时较长,mongodb,optimization,indexing,Mongodb,Optimization,Indexing,我有一组向量 集合的大小 print vectors.count() 是 102020 当我遍历字段时 start = time.time() for v in vectors.find({},{'vector' : 1, '_id' : 0}): pass print "total time:" , end-start 总时间:5.05100011826 但是当我使用explain()运行时,我发现查询花费的时间大大减少 print vectors.find({},{'vector

我有一组向量 集合的大小

print vectors.count()

102020

当我遍历字段时

start = time.time()
for v in vectors.find({},{'vector' : 1, '_id' : 0}):
    pass
print "total time:" , end-start
总时间:5.05100011826

但是当我使用explain()运行时,我发现查询花费的时间大大减少

print vectors.find({},{'vector' : 1, '_id' : 0}).explain()
{u'nYields':0,u'allPlans':[{u'cursor':u'BasicCursor',u'indexBounds':{}],u'nchunkspips':0,u'millis':23,u'n':102020,u'cursor':u'BasicCursor',u'indexBounds':{},u'nscannedObjects':102020,u'isMultiKey':False,u'indexOnly':False,u'nscanned':102020}

为什么会有这么大的时差?有没有办法加快速度? 我将所有向量加载到一个sql DB文本字段,同一个查询不到一秒钟。
谢谢

在迭代结果时,您可能希望使用它来提高速度并减少网络跳数

start = time.time()
for v in vectors.find({},{'vector' : 1, '_id' : 0}).batch_size(1000):
    pass
print "total time:" , end-start

我的猜测是,第二个示例仅显示mongoDB实际执行“查找”所需的速度,而前者还包括检索控制台中的每一条记录,并对其进行处理。

您可以为要查询的字段提供索引,在您的示例中,它是
“vector”
,即:

vectors.createIndex({"vector":1},{sparse:true})

然后您可以检查查询的时间。

不是time.time(),单位为毫秒。。正常的查询需要5毫秒和23毫秒的解释?我试过了,即使批量大于我的记录集,我的性能也很糟糕。是否可以将整个数据库加载到内存中?数据都在虚拟内存中,因此通过触摸文件,可以将所有数据都放入ram中。这可能只是传输数据然后进行迭代的成本。