MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

Пресичане на индекса на MongoDB

Е, всъщност го прави, въпреки че в този случай не е така. За да видите наистина какво се случва, трябва да погледнете „подробната“ форма на обяснение, като добавите true :

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. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Изберете вложени полета в mongo db

  2. MongoDB Връзка едно към много

  3. Redis срещу MongoDB:Какво трябва да знаете

  4. Python речник:премахване на символи u'

  5. Разбиране на ограничението за размера на документа на MongoDB BSON