[英]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_one
與find
相比令人驚訝和不必要的緩慢,而開發團隊將修復它(否則可能會被視為愚蠢的東西)。
其次,我檢查了代碼。 該實現正是您所期望的,這意味着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.