0

かなり具体的な質問です。

仮定してみましょう - 大きなドキュメントのコレクションがあり、それぞれに大量のデータがあり、追加のインデックスはありません。

したがって、このようなクエリを実行すると{field_name: "test_value"}、すべてのドキュメントを上から下に見て、必要なフィールドを見つけてその値を確認しようとするだけですか (全文検索のように)、またはいくつかのドキュメントを保存するような最適化が行われている可能性がありますメタデータ、またはドキュメント内のフィールドをアルファベット順で並べ替えるか、その他の内部ドキュメントの最適化??? (ハッシュテーブル、インデックスなど)

16 MB の生のテキスト データがある場合、必要なキーを見つけようとしてすべてのドキュメントを調べなければならないため、時間がかかる可能性があります。

4

1 に答える 1

1

インデックスがない場合 (常に持っている _id を除く) - これは最適化なしのフル スキャンです (ハッシュテーブルと呼ばれる最適化、一部のインデックス、一部のメタデータは実際には、クエリを高速化するために作成されたインデックスです) )。16 Mb は思ったほど時間がかからないかもしれませんが、インデックスがなければ、すべてのドキュメントを処理します (findOne または limit を実行していて、最初にそれらの 1 つまたはいくつかの要素を得ることができた場合を除く)。 1つずつ、パターンを一致させようとします。

この O(n) 速度に満足できない人々は、インデックスのアイデアを思いつきました。

于 2013-11-05T10:34:53.037 に答える