繁体   English   中英

索引会使find_one()更快吗?

[英]Will indexing make find_one() any faster?

如果我有一个pymongo查询,则包含约4000个文档,如下所示:

mong  =  pymongo.Connection()['ASD_2']['APS2'] 
py_mong = mong.find_one({'plate':'123456'})

考虑到有没有.explain()["cursor"].explain()["nscanned"]允许在find_one()因此没有在手的方法来找出扫描的性质,任何人都可以告诉我,如果它是值得在仅使用find_one()时索引集合吗?

是的,建立索引将避免线性搜索所需要的板并在对数时间内工作(快得多)。

是的,一点没错。

我怎么知道?

首先,如果不是这样,那将是完全不可接受的。 人们可能会抱怨find_onefind相比令人惊讶和不必要的缓慢,而开发团队将修复它(否则可能会被视为愚蠢的东西)。

其次,我检查了代码。 该实现正是您所期望的,这意味着find_one只是对find包装:

def find_one(self, spec_or_id=None, *args, **kwargs):
    if spec_or_id is not None and not isinstance(spec_or_id, dict):
        spec_or_id = {"_id": spec_or_id}
    for result in self.find(spec_or_id, *args, **kwargs).limit(-1):
        return result
    return None

(pymongo版本2.4.2)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM