【问题标题】:pymongo cursor taking long time to findpymongo 光标需要很长时间才能找到
【发布时间】:2018-05-15 00:14:57
【问题描述】:

Pymongo 光标耗时约 2 秒,请提出优化以下查询的方法。

查询事实

Records in MongoDB : 120,000
Indexed Key: emp_id
MongoDB Server: 3.2.11
PyMongo       : 3.5
Python        : 2.7

光标

要从 db 中查找文档,通过使用索引字段作为过滤器并仅投影必填字段,其消耗约 2 秒。

我正在寻找优化此查询的方法,以使其更快。

db = client["db_name"]
user_data = db.collection_name.find_one(
    {"emp_id": 1234}, {'nameFirst': 1, 'nameLast': 1, 'emp_id': 1, }
)

经过时间:1.829226017


为了提供信息,请使用 find() 引用相同的查询

def query_cursor():
    db = client["db_name"]
    cursor = db.collection_name.find(
        {"emp_id": 1234}, {'nameFirst': 1, 'nameLast': 1, 'emp_id': 1, }
    ).limit(1)

    return cursor

def get_user_data():
    cursor = query_user_data()
    user_data = None
    for document in cursor:
        user_data = document
    return user_data

print(get_user_data())

query_cursor 的经过时间:0.00215888023376

get_user_data 所用时间:1.79128599167

【问题讨论】:

  • 从您的查询来看,它似乎会很快返回数据。因此,您的计算可能包括创建与数据库的初始连接的开销。您的数据库和运行代码的计算机/服务器相对于彼此位于哪里?
  • @justcompile 我终于切换了数据中心并且能够更快地运行它。现在大约 0.10 秒。

标签: mongodb python-2.7 pymongo-3.x


【解决方案1】:

切换到正确的数据中心后问题已解决。现在数据库查询运行速度超快,不到 0.10 秒。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-09-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-11
    • 2012-12-04
    相关资源
    最近更新 更多