MongoDB
 sql >> Teknologi Basis Data >  >> NoSQL >> MongoDB

Persimpangan indeks MongoDB

Yah itu benar-benar meskipun tidak dalam kasus ini. Untuk benar-benar melihat apa yang terjadi, Anda perlu melihat bentuk penjelasan "verbose", dengan menambahkan 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
            }
    ],

Potong pendek, tetapi bagian terakhir adalah apa yang Anda cari. Seperti yang dijelaskan dalam manual, tampilan "Rencana Kompleks" berarti persimpangan sedang digunakan.

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

Satu-satunya kasus di sini adalah bahwa ketika sedang "dilihat" itu tidak dipilih oleh pengoptimal dalam hal ini sebagai kueri paling "optimal". Jadi, pengoptimal mengatakan bahwa sebenarnya rencana yang hanya menggunakan satu indeks yang dipilih, adalah yang akan selesai dengan cara yang paling responsif.

Jadi sementara "persimpangan" dipertimbangkan, itu bukan "yang paling cocok" dan indeks tunggal dipilih.




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. beberapa contoh Mongo DB di server yang sama

  2. Panduan untuk Penerapan &Pemeliharaan MongoDB Menggunakan Wayang:Bagian 1

  3. MongoDB $isoDayOfWeek

  4. Inisialisasi global yang gagal:BadValue Tidak valid atau tidak ada set lokal pengguna. Harap pastikan variabel lingkungan LANG dan/atau LC_* disetel dengan benar

  5. Bagaimana saya bisa mengurutkan nol yang terakhir dipesan di mongodb?