2016-11-29 5 views
0

データベース 'testdb'にコレクション 'testcollection'があるとします。このコレクションには、主要な「テストフィールド」があります。 このコレクションには、何十億もの文書が入っています値の範囲でキーを持つ文書を検索するMongoDBのパフォーマンス

キー 'testfield'の正確な値を見つけることは非常に高速で、何十億もの文書であっても、インデックスは基数木(おそらく?)に基づいています。

model.find({ 
    testfield: "some-value" 
}) 

しかし、値の範囲を見つけると、これらの数十億の文書に対してまだ高速ですか?

問題以下のコメントで
model.find({ 
    testfield:{ 
    $gte: "some-lower-value", 
    $lte: "some-upper-value" 
    } 
}) 
+1

すべては、正確なキーインデックスのソートによって異なります。これは、データベースを構築するときの設定と構成に依存します(実際に変更することもできます)。もしそれが 'testfield'値のソートされたリストであれば、それは比較的速くなければなりません[上下限が比較的近いと仮定して、明らかにあなたが広い範囲を持っていれば、dbの広い部分があなたの方法で送られ、いくつかの時間] –

答えて

0

マット・ピーターソン:

すべてが正確なキー・インデックスのソートに依存します。これは、データベースを構築するときに の設定と構成に依存します( も事後に変更できます)。テストフィールド のソートされたリストであれば、それは比較的速くなければなりません。[ の制限が比較的近く、広い範囲であれば明らかに、 の広い部分があなたの方法で送信されます時間をとる]

範囲を探す時間は速いが、値の範囲に基づいている。

正確な値を見つけるのと同じように、より低い値と高い値はすぐに〜log(N)で見つけることができます。インデックスはキーのソートされた値のリストでなければならないので、出力時間は、すべてのエントリを低い値から高い値に抽出するループに依存します。

関連する問題