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

MongoDB+Python-非常に遅い単純なクエリ

    インデックスが作成されてもよろしいですか? getIndexes()の出力を提供できますか あなたのコレクションの

    例:db.my_collection.getIndexes()

    とクエリの説明

    db.my_collection.find({created_at_year: 2014, created_at_month: 1, created_at_day: 28 }).explain()
    

    PS:もちろん、必要以上に保存しているという事実について、@Aestheteに同意する必要があります...

    2014年1月29日更新

    完全!ご覧のとおり、すべてを含む1つの複合インデックスを作成できる場合、4つの異なるインデックスがあります。

    定義

    db.my_collection.ensureIndex({created_at_year: 1, created_at_month: 1, created_at_day: 1, created_at_hour: 1 })

    次のクエリを実行できる、より正確なインデックスが提供されます。

    • year
    • year およびmonth
    • year およびmonth およびday
    • year およびmonth およびday およびhour

    これにより、インデックスデータですべての基準が満たされるため、クエリ(4つのキーを使用)がはるかに高速になります!

    ensureIndex()のキーの順序に注意してください 重要なのは、その順序が実際に上記のクエリのリストを定義することです!

    また、正しいプロジェクションを指定する場合よりも、これら4つのフィールドだけが必要な場合は、
    eg:
    db.my_collection.find({created_at_year: 2014, created_at_month: 1, created_at_day: 28}, { created_at_year: 1, created_at_month: 1, created_at_day: 1 })

    その場合、インデックスのみが使用されます。これが最大のパフォーマンスです!



    1. Robo3TGUIを使用してMongoDBデプロイメントに接続する方法

    2. JunitでRedisをスキップ/モックする

    3. MongoDB全文検索

    4. RuntimeWarning:スーパーユーザー権限でワーカーを実行しています:これは絶対にお勧めしません