suchen

Heim  >  Fragen und Antworten  >  Hauptteil

Ist die Mongodb-Abfrage für die Rückgabe von eingeschränkten Abfragen langsamer?

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?

大家讲道理大家讲道理2773 Tage vor865

Antworte allen(1)Ich werde antworten

  • 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!

    Antwort
    0
  • StornierenAntwort