亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

mongodb的and查詢

mongodb的and查詢

小怪獸愛吃肉 2018-08-18 23:06:29
假設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是不是都滿足然后得出結果,跟有多少條件無關。

  • 有索引部分覆蓋條件的情況下系統會挑它認為最優的索引,在其結果上再掃描得出的文檔,看是不是滿足其他條件。

  • 如果索引正好能夠覆蓋全部條件,那索引直接就可以給出結果(最優情況)。

無論哪種,都不存在你想的先查一個條件,再查一個條件,再……不可能有那樣的執行計劃,太浪費。所以條件的順序其實是無關的。


查看完整回答
反對 回復 2018-08-26
  • 1 回答
  • 0 關注
  • 862 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號