Курсор Pymongo занимает ~ 2 секунды, пожалуйста, предложите способы оптимизации запроса ниже.

Факты запроса

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

Курсор

Чтобы найти документ из базы данных, используя индексированное поле в качестве фильтра и проецируя только обязательные поля, это занимает ~ 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

3
Mic 1 Дек 2017 в 02:04

1 ответ

Лучший ответ

Проблема решена после переключения на правильный дата-центр. Теперь запрос к БД работает очень быстро и составляет менее 0,10 секунды.

-1
Mic 20 Дек 2017 в 22:12