MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

Pourquoi MongoDB n'utilise pas Index Intersection ?

Il y a quelques détails sur la sélection d'index dans le Problème JIRA SERVER-3071 mais je ne peux pas dire si tout est toujours d'actualité pour la 3.0. Quoi qu'il en soit :

MongoDB 3.0.2 semble ne pas considérer l'interaction d'index pour plage requête. Mais ce sera le cas pour les intervalles de points :

> db.orders.find( { item: {$eq : "abc123"}, qty: { $eq: 15 } } ).explain()
...

        {
            "stage" : "FETCH",
            "inputStage" : {
                "stage" : "KEEP_MUTATIONS",
                "inputStage" : {
                    "stage" : "AND_SORTED",
                    "inputStages" : [
                        {
                            "stage" : "IXSCAN",
                            "keyPattern" : {
                                "qty" : 1
                            },
                            "indexName" : "qty_1",
                            "isMultiKey" : false,
                            "direction" : "forward",
                            "indexBounds" : {
                                "qty" : [
                                    "[15.0, 15.0]"
                                ]
                            }
                        },
                        {
                            "stage" : "IXSCAN",
                            "keyPattern" : {
                                "item" : 1
                            },
                            "indexName" : "item_1",
                            "isMultiKey" : false,
                            "direction" : "forward",
                            "indexBounds" : {
                                "item" : [
                                    "[\"abc123\", \"abc123\"]"
                                ]
                            }
                        }
                    ]
                }