簡體   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