複合索引中的排序很重要。但是讀/寫的順序是否重要? mongodb足夠聰明,可以根據可用索引對字段進行重新排序嗎?有序字典(python)是否重要w.r.t複合索引?
代碼是在Python中。我讀過,最好通過使用有序字典:http://api.mongodb.org/python/current/api/bson/son.html。
但是在切換有序和無序字典之後,我看不到任何性能差異。在任一選項上運行解釋,表明它評估了不同的索引(allPlans字段),並挑選了其順序與收到查詢的方式不同的索引。
如果通過任何方式證實了這一點,我們會很樂意。
我使用的是mongo 2.6。可能是mongo在他們的新版本中增加了一些優化。
編輯:(追加例題) 對於前:
Index is on {c: 1, a: 1, b: 1}
Intended query: db.tble.find(some_dict)
哪一個更好? (in python)
- some_dict = {c:「C」,a:「A」,b:「B」}#unordered。
- some_dict = bson.son.SON({C: 「C」,一個: 「A」,B: 「B」})
無論作出的任何差別,但它是推薦使用第二,我不知道爲什麼。
字段順序在查詢對象中無關緊要。我認爲它會被視爲一個錯誤,因爲它對查詢的含義沒有影響。這就是你所說的「在讀/寫中排序」的意思嗎? – JohnnyHK 2014-09-20 02:16:43
是的現場秩序。例如:db.table.find({「a」:A,「b」:B}) – shrnkrn 2014-09-20 15:47:52
@JohnnyHK用一個例子編輯我的問題。希望現在更清楚。 – shrnkrn 2014-09-20 16:02:46