検索

ホームページ  >  に質問  >  本文

Mongodb の制限されたクエリの戻りフィールドのクエリは遅いですか?

find を直接使用してすべてのフィールドを返すと、結果は次のようになり、クエリ時間は 155

になります。

戻りフィールドが制限されている場合、クエリ時間は長くなり、クエリ時間は 251

###なぜ?返されるフィールドを制限すると、クエリの文字バイトが小さくなり、送信が高速になるはずではありませんか?

大家讲道理大家讲道理2773日前868

全員に返信(1)返信します

  • PHP中文网

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

    投稿した実行計画では主に次の情報が明らかになります:

    1. 最初の実行計画:

    インデックスが使用されていないため、collscan はそれが完全なコレクション スキャンであることを明らかにするため、インデックスの作成を検討できます

    2. 2 番目の実行計画:

    やはりフルコレクションスキャンであり、条件を満たすドキュメントがメモリにスキャンされ、メモリ上で投影が完了し、指定されたフィールドが選択されてフィールドが返されます。このままではさらに時間がかかりそうです。

    指定されたフィールドのみが返されますが、ストレージの読み取りまたはコレクション全体のスキャンの場合は、ドキュメント全体のみを返すことができます。これはおそらくデータベースの基本原則です。ドキュメントに従って読み取りと書き込みを行います。また、一部の列型データベースは列に従って保存されますが、多くのデータベースは行またはドキュメントに従って保存されます。

    指定したフィールドにカバーされたインデックスを作成し、指定したフィールドのみを返す場合、インデックスをスキャンするだけで指定したフィールドを返すことができるため、これが最も効率的です。

    ご参考までに。

    MongoDB が大好きです!楽しむ!

    返事
    0
  • キャンセル返事