搜尋

首頁  >  問答  >  主體

mongodb限定查詢回傳字段查詢比較慢?

當我直接用find回傳全部欄位時,結果如下,查詢時間為155

##如果限定傳回字段,查詢時間反而更長了,查詢時間為251

##為什麼?如果我限定回傳的字段,查詢的字元位元組變少,傳輸不應該更快麼?

大家讲道理大家讲道理2773 天前867

全部回覆(1)我來回復

  • PHP中文网

    PHP中文网2017-05-17 10:06:05

    您貼出的執行計畫主要透露出的資訊如下:

    1、第一個執行計劃:

    因為沒有使用到索引,所以collscan透露是全collection掃描,所以可以考慮建立索引

    2、第二個執行計畫:

    仍然是全collection掃描,並將滿足條件的documents掃描到內存,並在內存中完成projection,選出指定的field,並返回field。這樣子看來,時間會消耗的更多。

    儘管是只回傳指定的field,但是讀取儲存的時候,全collection掃描的時候,只能回傳整個documents。這大概是資料庫方面的一些基本原理:按照文件來讀寫的;補充說明,有些列式資料庫是按列保存的,就是您設想的那種情形;但很多資料庫是按照行,或者按照文件保存的。

    如果您在指定的field上建立covered index,並且只傳回指定的field,這樣子的效率最佳,因為僅掃描索引就可以傳回指定的field。

    供參考。

    Love MongoDB! Have fun!

    回覆
    0
  • 取消回覆