假設db.find({a:1,b:1,c:1}),滿足條件a的文檔有100萬條,滿足條件b的文檔有70萬條,滿足條件c的有30萬條,這三個字段都沒有索引,進行全表掃描,那么find({a:1,b:1,c:1})和find({c:1,b:1,a:1}),and條件連接中字段順序不一樣,這二者查詢速度是否會不一樣,還是說不管條件字段誰寫在前面誰寫在后面對mongodb都一樣?
1 回答

胡子哥哥
TA貢獻1825條經驗 獲得超6個贊
都沒有索引的情況下只有一個執行計劃:COLLSCAN(全表掃描),所以一定是把每條記錄拿出來比一遍ABC是不是都滿足然后得出結果,跟有多少條件無關。
有索引部分覆蓋條件的情況下系統會挑它認為最優的索引,在其結果上再掃描得出的文檔,看是不是滿足其他條件。
如果索引正好能夠覆蓋全部條件,那索引直接就可以給出結果(最優情況)。
無論哪種,都不存在你想的先查一個條件,再查一個條件,再……不可能有那樣的執行計劃,太浪費。所以條件的順序其實是無關的。
- 1 回答
- 0 關注
- 862 瀏覽
添加回答
舉報
0/150
提交
取消