Mongodb の制限されたクエリの戻りフィールドのクエリは遅いですか?
大家讲道理
大家讲道理 2017-05-17 10:04:05
0
1
875

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

になります。

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

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

大家讲道理
大家讲道理

光阴似箭催人老,日月如移越少年。

全員に返信(1)
洪涛

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

1. 最初の実行計画:

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

2. 2 番目の実行計画:

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

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

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

ご参考までに。

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

いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート