Wenn ich find direkt verwende, um alle Felder zurückzugeben, sind die Ergebnisse wie folgt und die Abfragezeit betr?gt 155
Wenn das Rückgabefeld begrenzt ist, ist die Abfragezeit l?nger, die Abfragezeit betr?gt 251
Warum? Wenn ich die zurückgegebenen Felder beschr?nke, werden die Abfragezeichenbytes kleiner. Sollte die übertragung nicht schneller sein?
光陰似箭催人老,日月如移越少年。
您貼出的執(zhí)行計(jì)劃主要透露出的信息如下:
1、第一個(gè)執(zhí)行計(jì)劃:
因?yàn)闆]有使用到索引,所以collscan透露是全collection掃描,所以可以考慮創(chuàng)建索引
2、第二個(gè)執(zhí)行計(jì)劃:
仍然是全collection掃描,并將滿足條件的documents掃描到內(nèi)存,并在內(nèi)存中完成projection,選出指定的field,并返回field。這樣子看來,時(shí)間會消耗的更多。
盡管是只返回指定的field,但是讀取存儲的時(shí)候,全collection掃描的時(shí)候,只能返回整個(gè)documents。這大概是數(shù)據(jù)庫方面的一些基本原理:按照文檔來讀寫的;補(bǔ)充說明,有些列式數(shù)據(jù)庫是按列保存的,就是您設(shè)想的那種情形;但很多數(shù)據(jù)庫是按照行,或者按照文檔保存的。
如果您在指定的field上創(chuàng)建covered index,并只返回指定的field,這樣子的效率最佳,因?yàn)閮H僅掃描索引就可以返回指定的field。
供參考。
Love MongoDB! Have fun!