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

MongoDBが候補プランを選択する方法

    コレクションで定義された複数のインデックスでクエリを満たすことができる場合、MongoDBは該当するすべてのインデックスを並行してテストします。 101の結果を返すことができる最初のインデックスは、クエリプランナーによって選択されます。インデックスの選択には他にもさまざまな側面がありますが、一般的に、これはクエリの最適化 ドキュメント。

    このインデックス選択方法では、次善のインデックスが選択される場合があります。これは、MongoDBの観点からすると、同じことを説明する複数のインデックスがあるためです。観察した次善のインデックス選択を軽減するには、次のようにします。

    1. 最適ではないとわかった他のすべてのインデックスを削除します。

      これは、クエリプランナーが、クエリに合わせて調整したインデックスを選択する以外に選択肢がないことを確認するためです。

    2. hint()を使用する メソッド

      hint() クエリに指定されたインデックスを使用するようにMongoDBに明示的に指示できます。例:

      db.tasks.find(...).hint({project: 1, created_by: 1})
      

      https://docs.mongodb.com/v2をご覧ください。 6/参照/演算子/メタ/ヒント/ hint()の詳細については 。

    クエリのもう1つのニュアンスは、$orが含まれていることです。 オペレーター。この場合、$orのすべての用語 式にはインデックスが関連付けられている必要があります それ以外の場合、MongoDBはコレクションスキャンを実行します(BasicCursor MongoDB 2.6用語で)。これについては、 https://docsで詳しく説明されています。 .mongodb.com / v2.6 / reference / operator / query / or /#behaviors




    1. すべてのフィールドが一意である場合にのみ、ドキュメントをMongoDBに挿入します

    2. golang+redis同時実行スケジューラのパフォーマンスの問題

    3. pymongo + gevent:バナナを投げてmonkey_patchだけ?

    4. MongoDBユーザーのパスワードを変更するにはどうすればよいですか?