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

MongoDBインデックス交差

    この場合はそうではありませんが、実際にはそうです。何が起こっているのかを実際に確認するには、trueを追加して、「詳細」形式のExplainを確認する必要があります。 :

    db.t.find({item:"abc123",qty:{$gt:15}}).explain(true)
    {
        "cursor" : "BtreeCursor item_1",
        "isMultiKey" : false,
        "n" : 84,
        "nscannedObjects" : 100,
        "nscanned" : 100,
        "nscannedObjectsAllPlans" : 201,
        "nscannedAllPlans" : 304,
        "scanAndOrder" : false,
        "indexOnly" : false,
        "nYields" : 2,
        "nChunkSkips" : 0,
        "millis" : 2,
        "indexBounds" : {
                "item" : [
                        [
                                "abc123",
                                "abc123"
                        ]
                ]
        },
        "allPlans" : [
                {
                        "cursor" : "BtreeCursor item_1",
                        "isMultiKey" : false,
                        "n" : 84,
                        "nscannedObjects" : 100,
                        "nscanned" : 100,
                        "scanAndOrder" : false,
                        "indexOnly" : false,
                        "nChunkSkips" : 0,
                        "indexBounds" : {
                                "item" : [
                                        [
                                                "abc123",
                                                "abc123"
                                        ]
                                ]
                        }
                },
                {
                        "cursor" : "BtreeCursor qty_1",
                        "isMultiKey" : false,
                        "n" : 0,
                        "nscannedObjects" : 101,
                        "nscanned" : 102,
                        "scanAndOrder" : false,
                        "indexOnly" : false,
                        "nChunkSkips" : 0,
                        "indexBounds" : {
                                "qty" : [
                                        [
                                                15,
                                                Infinity
                                        ]
                                ]
                        }
                },
                {
                        "cursor" : "Complex Plan",
                        "n" : 0,
                        "nscannedObjects" : 0,
                        "nscanned" : 102,
                        "nChunkSkips" : 0
                }
        ],
    

    短く切りますが、最後の部分はあなたが探しているものです。マニュアルで説明されているように、「複雑な計画」の外観は、交差点が使用されていることを意味します。

                {
                        "cursor" : "Complex Plan",
                        "n" : 0,
                        "nscannedObjects" : 0,
                        "nscanned" : 102,
                        "nChunkSkips" : 0
                }
    

    ここでの唯一のケースは、「調べられている」間、オプティマイザーによって最も「最適な」クエリとして選択されていないことです。したがって、オプティマイザーは、実際には、選択した1つのインデックスのみを使用する計画が、最も応答性の高い方法で完了する計画であると言っています。

    したがって、「交差点」が考慮されましたが、それは「最適」ではなく、単一のインデックスが選択されました。




    1. MongoDBで日付から年を取得する6つの方法

    2. 既存のMongoDBエントリからキー/値を削除する

    3. 複数のノードとsocket.io-redisを持つsocket.ioでソケットが生きている(接続されている)ことを確認する方法

    4. SQLで最小値の行を選択する3つの方法