Заказ в сложных показателях. Но делает ли заказ в чтении/записи вопрос? Является ли mongodb достаточно умным, чтобы изменить порядок полей на основе доступных индексов?Является ли упорядоченный словарь (python) параметром w.r.t?
Код находится на python. Я читал, что желательно использовать в упорядоченном словаре, используя: http://api.mongodb.org/python/current/api/bson/son.html.
Но после переключения между упорядоченными и неупорядоченными словарями я не вижу разницы в производительности. Запуск объяснения по любым параметрам показал, что он оценил разные индексы (поле allPlans) и взял индекс, порядок которого отличался от того, как он получил запрос.
Если бы это было подтверждено в любом случае.
Я использую mongo 2.6. Может быть, манго добавил какую-то оптимизацию в своих новых версиях.
Edit: (добавлен пример) Для экс:
Index is on {c: 1, a: 1, b: 1}
Intended query: db.tble.find(some_dict)
Какой из них лучше? (в python)
- some_dict = {c: "C", a: "A", b: "B"} # неупорядоченный.
- some_dict = bson.son.SON ({с: "С", а: "А", Ь: "В"})
Ни сделал никакой разницы, но рекомендуется использовать 2-е, I не знаю почему.
Порядок полей не имеет значения в объекте запроса. Я предполагаю, что это будет считаться ошибкой, если это произойдет, поскольку оно не влияет на смысл запроса. Это то, что вы подразумеваете под «упорядочением при чтении/записи»? – JohnnyHK
Да, порядок на поле. Что-то вроде: db.table.find ({"a": A, "b": B}) – shrnkrn
@JohnnyHK отредактировал мой вопрос на примере. Надеюсь, теперь все ясно. – shrnkrn