#mongodb #indexing #pymongo
#mongodb #индексирование #pymongo
Вопрос:
Я пытаюсь достичь наилучшего времени выполнения запроса, передавая наилучший составной индекс. Итак, запрос:
db.BMW_offers
.find({"model":"X5", "predict_value":{"$gt":700,"$lte":1300}, "owners_number":{"$lte":2}, "status":{"$ne":"ERROR"}, "year":{"$gt":2010 }})
.sort({"offer_creation_date":-1, "predict_value":1, "mileage": 1})
Следуя этому правилу ESR в Mongo, я создал следующий составной индекс:
db[col_name].create_index([
('model', 1), # Equality first -> (model: "X5")
('offer_creation_date', -1), # Sort second -> (offer_creation_date: -1)
('predict_value', 1), # Sort second -> (predict_value: 1)
('mileage', 1), # Sort second -> (mileage: 1)
('predict_value', -1), # Range third -> (predict_value: {$gt: 700})
('predict_value', 1), # Range third -> (predict_value: {$lte: 1300})
('owners_number', 1), # Range third -> (owners_number: {$lte: 2})
('status', 1), # Range third -> (status: {$ne: "ERROR"})
('year', -1) # Range third -> (year: {$gt: 2010})
], name='actual_search', default_language='english')
Это лучший индекс для этого запроса?
Ответ №1:
Да, это так, вы охватили все поля со стадии фильтрации, а также поля со стадии сортировки в правильном направлении.