sql >> データベース >  >> NoSQL >> MongoDB

インデックスありの検索時間>インデックスなしの検索時間

    この場合、一致する結果セットはコレクションのほぼ全体で構成されているため、インデックスは役に立ちません。つまり、RAMにロードしてほとんどのインデックスをトラバースするだけでなく、RAMにロードしてドキュメント自体をトラバースする必要があります。

    インデックスがないと、テーブルスキャンが実行され、各ドキュメントが検査され、一致した場合は返されます。

    クエリがコレクションのほぼ全体を返すこのような場合、インデックスは役に立たない可能性があります。

    .limit()を追加すると、クエリが高速化されます。クエリオプティマイザに.hint()でインデックスを使用しないように強制することもできます:

    db.collection.find().hint({$natural:1})
    

    選択したフィールドをインデックスを作成したフィールドのみに制限することで、クエリにインデックス自体から直接結果値を提供させることもできます。これにより、インデックススキャンを実行した後にドキュメントをロードする必要がなくなります。

    これを試して、explain出力が"indexOnly":trueを示しているかどうかを確認してください

    db.numbers.find({number: {$gt: 10000}}, {number:1}).explain()
    

    詳細はこちら:

    http://www.mongodb.org / display / DOCS / Retrieveing + a + Subscription + of + Fields#RetrieveingaSubsetofFields-CoveredIndexes




    1. OSX10.11にmongo-php-driverをインストールできません

    2. NODEでのRedisSCANの使用

    3. 一部のOSでは、文字列をバッファとして再保存しますか?

    4. キャッチされなかった例外'MongoConnectionException'